检查字符串是否与 JS 中的正则表达式匹配

IT技术 javascript regex match
2021-02-03 11:35:21

我想使用 JavaScript(可以使用 jQuery)来做一些客户端验证来检查字符串是否与正则表达式匹配:

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

理想情况下,它将是一个返回 true 或 false 的表达式。

我是 JavaScript 新手,可以满足match()我的需求吗?它似乎检查字符串的一部分是否与正则表达式匹配,而不是整个事情。

6个回答

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

console.log(/^([a-z0-9]{5,})$/.test('abc1')); // false

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

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

...您可以()从正则表达式中删除 ,因为您不需要捕获。

那么你会如何做相反的事情呢?“不是从……开始的”
2021-03-11 11:35:21
@stackdave 您可能在使用 Java 而不是 JavaScript?
2021-03-24 11:35:21
正则表达式中的初始 ^ 有什么作用?
2021-04-06 11:35:21
@PedroD ^ 意味着开始或开始
2021-04-06 11:35:21
2021-04-07 11:35:21

使用test()方法:

var term = "sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
    console.log("Valid");
} else {
    console.log("Invalid");
}
请注意,版本 withRegExp允许将变量值注入正则表达式字符串。
2021-03-22 11:35:21
必须删除双引号new RegExp("^([a-z0-9]{5,})$")才能使其工作
2021-04-03 11:35:21

您也可以使用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
它与数字一起工作的原因是因为数字被强制转换为字符串,因为它在期望字符串时作为参数给出。我不会依赖这种行为。这取决于您的环境对 test() 的实现。(匹配失败,因为数字没有match成员)。如果您想将它与正则表达式(String(123)例如)一起使用,我建议将您的数字显式转换为字符串
2021-03-21 11:35:21
可以在此处使用匹配,但如果您查看性能,test当我们只想验证字符串以匹配正则表达式而不从中提取子字符串时,性能会提高 30%。
2021-03-28 11:35:21
test 和 match(和 matchAll)之间最显着的区别是 match 会返回所有匹配子字符串的列表,而 test 只检查是否有。检查javascript.info/regexp-methods 中的正则表达式方法
2021-03-29 11:35:21
@pmrotule 是的,但应该在匹配描述之前提及。
2021-04-02 11:35:21

使用/youregexp/.test(yourString),如果你只是想知道你的字符串是否与正则表达式匹配。

这是一个查找某些 HTML 标签的示例,因此很明显/someregex/.test()返回一个布尔值:

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