Javascript 重复可能不存在的匹配模式

Javascript 重复可能不存在的匹配模式,javascript,regex,Javascript,Regex,我们有一个简单的正则表达式: var regex = \a[bc]*\; // matches 'ab', 'abb', 'accc' 但是这个正则表达式也匹配“aa”。 换句话说,因为模式[bc]不存在,它重复了“a”。但目的是捕捉“a”,然后捕捉任意数量的“b”或“c” 如何应用*(重复模式),使其仅在匹配任何内容时作用于前一个字符。否。*不应用于中的a*仅应用于字符类[bc] 您尚未匹配完整的字符串。您必须在正则表达式中使用^(以开头)和$(以结尾) var regex = /^a[b

我们有一个简单的正则表达式:

var regex = \a[bc]*\;

// matches 'ab', 'abb', 'accc'
但是这个正则表达式也匹配“aa”。 换句话说,因为模式[bc]不存在,它重复了“a”。但目的是捕捉“a”,然后捕捉任意数量的“b”或“c”


如何应用*(重复模式),使其仅在匹配任何内容时作用于前一个字符。

否。
*
不应用于中的
a
<代码>*仅应用于字符类
[bc]

您尚未匹配完整的字符串。您必须在
正则表达式中使用
^
(以开头)和
$
(以结尾)

var regex = /^a[bc]*$/;
//           ^      ^
或者,如果要匹配较大字符串中的子字符串,请使用单词边界选择器

var regex = /\ba[bc]*\b/;
//           ^^      ^^
演示:

var regex=/\ba[bc]*\b/;
document.write(“regex.test('a'):”+regex.test('a'));//真的
document.write(“
regex.test('abc'):”+regex.test('abc');//真的 document.write(“
regex.test('abcab'):”+regex.test('abcab');//假的 document.write(“
regex.test('aa'):”+regex.test('aa');//假的 //串字 document.write(“

regex.test('这是adbc'):”+regex.test('这是adbc');//真“a”
document.write(“
regex.test('这是adbc'):”+regex.test('这是adbc');//false
如果模式为中间字符串,则会发生什么情况:“junk aa junk”不应匹配。但“垃圾ab垃圾”应与“ab”匹配,“垃圾ac垃圾”应与“ac”匹配