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

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


当前回答

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

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`)

其他回答

你也可以使用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

请试试这种花:

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

真正的

const regExpStr = "^([a-z0-9]{5,})$" const result = new RegExp(regExpStr, 'g')。test("Your string") //这里我使用了'g',意思是全局搜索 Console.log (result) //匹配则为true,不匹配则为false

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

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

如果您想测试整个字符串的精确匹配,请记住将^表示字符串的开始,将$表示字符串的结束。

例子:

/[a-z]+/.test('aaa111'); // true
/^[a-z]+$/.test('aaa111'); // false

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

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]