我们有这个简单的正则表达式:
var regex = \a[bc]*\;
// matches 'ab', 'abb', 'accc'
Run Code Online (Sandbox Code Playgroud)
但这个正则表达式也匹配'aa'.换句话说,因为模式[bc]不存在,所以它重复了'a'.但意图是抓住'a'然后任意数量的'b'或'c'.
你将如何应用*(重复模式),以便只有匹配任何内容时才会对前一个字符起作用.
号*没有被施加到a在regex.*仅适用于字符类 [bc].
您没有匹配完整的字符串.你必须使用^(开头)和$(结束)regex.
var regex = /^a[bc]*$/;
// ^ ^
Run Code Online (Sandbox Code Playgroud)
如果要匹配较大字符串中的子字符串,请使用字边界选择器.
var regex = /\ba[bc]*\b/;
// ^^ ^^
Run Code Online (Sandbox Code Playgroud)
演示:
var regex = /\ba[bc]*\b/;
document.write("regex.test('a'): " + regex.test('a')); // true
document.write("<br />regex.test('abc'): " + regex.test('abc')); // true
document.write("<br />regex.test('abcab'): " + regex.test('abcab')); // false
document.write("<br />regex.test('aa'): " + regex.test('aa')); // false
// Words in string
document.write("<br /><br />regex.test('this is a adbc'): " + regex.test('this is a adbc')); // true 'a'
document.write("<br />regex.test('this is adbc'): " + regex.test('this is adbc')); // falseRun Code Online (Sandbox Code Playgroud)
视觉表现