我想使用JavaScript(我也可以使用jQuery)来做检查字符串是否匹配正则表达式^([a-z0-9]{5,})$,并得到一个真或假的结果。

Match()似乎是检查字符串的一部分是否匹配正则表达式,而不是整个正则表达式。它能解决问题吗?我能用它来解决问题吗?如何?


当前回答

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

其他回答

你也可以使用match():

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

但是test()似乎更快,您可以在这里阅读。

match()和test()之间的重要区别:

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

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

如果你想要一个布尔结果,请使用regex.test():

console.log (/ ^ ([a-z0-9] {5}) $ / test('他们'));/ /错误 console.log (/ ^ ([a-z0-9] {5}) $ / test (' abc12 '));/ /正确的 console.log (/ ^ ([a-z0-9] {5}) $ / test(“abc123”));/ /正确的

...您可以从regexp中删除(),因为您不需要捕获。

如果你不希望^和$出现在正则表达式中(我有这样一个用例),你可以这样做

let reg = /[a-zA-Z0-9]+/g
let txt = "hello"
let matches = reg.exec(txt)[0] == txt
console.log(`It ${matches ? "does" : "doesn't"} match`)

try

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

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

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