简体   繁体   中英

Regex in javascript complex

string str contains somewhere within it http://www.example.com/ followed by 2 digits and 7 random characters (upper or lower case). One possibility is http://www.example.com/45kaFkeLd or http://www.example.com/64kAleoFr . So the only certain aspect is that it always starts with 2 digits.

I want to retrieve "64kAleoFr".

var url = str.match([regex here]);

The regex you're looking for is /[0-9]{2}[a-zA-Z]{7}/ .

var string = 'http://www.example.com/64kAleoFr',
    match = (string.match(/[0-9]{2}[a-zA-Z]{7}/) || [''])[0];
console.log(match); // '64kAleoFr'

Note that on the second line, I use the good old .match() trick to make sure no TypeError is thrown when no match is found. Once this snippet has executed, match will either be the empty string ( '' ) or the value you were after.

you could use

var url = str.match(/\d{2}.{7}$/)[0];

where:

\d{2} //two digits
.{7} //seven characters
$    //end of the string

if you don't know if it will be at the end you could use

 var url = str.match(/\/\d{2}.{7}$/)[0].slice(1); //grab the "/" at the begining and slice it out

那使用split呢?

alert("http://www.example.com/64kAleoFr".split("/")[3]);

http://www\\\\.example\\\\.com/([0-9]{2}\\\\w{7}) this is your pattern. You'll get your 2 digits and 7 random characters in group 1.

var url = "http://www.example.com/",
    re = new RegExp(url.replace(/\./g,"\\.") + "(\\d{2}[A-Za-z]{7})");

str = "This is a string with a url: http://www.example.com/45kaFkeLd in the middle.";

var code = str.match(re);

if (code != null) {
    // we have a match
    alert(code[1]); // "45kaFkeLd"
}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

The url needs to be part of the regex if you want to avoid matching other strings of characters elsewhere in the input. The above assumes that the url should be configurable, so it constructs a regex from the url variable (noting that "." has special meaning in a regex so it needs to be escaped). The bit with the two numbers and seven letter is then in parentheses so it can be captured.

Demo: http://jsfiddle.net/nnnnnn/NzELc/

If you notice your example strings, both strings have few digits and a random string after a slash (/) and if the pattern is fixed then i would rather suggest you to split your string with slash and get the last element of the array which was the result of the split function.

Here is how:

var string = "http://www.example.com/64kAleoFr"
ar = string.split("/");
ar[ar.length - 1];

Hope it helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM