关于javascript:检查字符串是否与JS中的regex匹配

Check whether a string matches a regex in JS

我想使用javascript(可以与jquery一起使用)进行一些客户端验证,以检查字符串是否与regex匹配:

1
^([a-z0-9]{5,})$

理想情况下,它是一个返回"真"或"假"的表达式。

我是一个javascript新手,match()做我需要的吗?它似乎检查字符串的一部分是否与regex匹配,而不是整个字符串。


如果只需要布尔结果,则使用regex.test()

1
2
3
4
5
/^([a-z0-9]{5,})$/.test('abc1');   // false

/^([a-z0-9]{5,})$/.test('abc12');   // true

/^([a-z0-9]{5,})$/.test('abc123');   // true

…你可以从你的regexp中删除(),因为你不需要捕获。


采用test()法:

1
2
3
4
5
6
7
var term ="sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
    console.log("Valid");
} else {
    console.log("Invalid");
}


您也可以使用match()

1
2
3
if (str.match(/^([a-z0-9]{5,})$/)) {
    alert("match!");
}

但你在这里读到的,test()似乎更快。

match()test()的重要区别:

match()只适用于字符串,但test()也适用于整数。

1
2
3
4
5
6
12345.match(/^([a-z0-9]{5,})$/); // ERROR
/^([a-z0-9]{5,})$/.test(12345);  // true
/^([a-z0-9]{5,})$/.test(null);   // false

// Better watch out for undefined values
/^([a-z0-9]{5,})$/.test(undefined); // true


如果只想知道字符串是否与regexp匹配,请使用/youregexp/.test(yourString)


下面是一个查找特定HTML标记的示例,因此很明显,/someregex/.test()返回一个布尔值:

1
if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');

1
2
3
 let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 let regexp = /[a-d]/gi;
 console.log(str.match(regexp));


我建议使用Execute方法,如果不存在匹配项,它将返回空值,否则它将返回一个有用的对象。

1
2
3
4
5
let case1 = /^([a-z0-9]{5,})$/.exec("abc1");
console.log(case1); //null

let case2 = /^([a-z0-9]{5,})$/.exec("pass3434");
console.log(case2); // ['pass3434', 'pass3434', index:0, input:'pass3434', groups: undefined]

尝试

1
 /^[a-z\d]{5,}$/.test(str)

1
2
3
console.log( /^[a-z\d]{5,}$/.test("abc123") );

console.log( /^[a-z\d]{5,}$/.test("ab12") );


请试试这朵花:

1
/^[a-z0-9\_\.\-]{2,20}\@[a-z0-9\_\-]{2,20}\.[a-z]{2,9}$/.test('[email protected]');

true