当前位置: 代码迷 >> JavaScript >> 重复可能不存在的匹配模式
  详细解决方案

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

热度:64   发布时间:2023-06-12 14:19:37.0

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

var regex = \a[bc]*\;

// matches 'ab', 'abb', 'accc'

但是此正则表达式也匹配“ aa”。 换句话说,因为模式[bc]不存在,所以重复了'a'。 但是目的是要捕捉“ a”,然后捕捉任意数量的“ b”或“ c”。

您将如何应用*(重复模式),以便仅在匹配任何字符时才对前一个字符起作用。

*不应用到a在 。 *仅适用于字符类 [bc]

您没有匹配完整的字符串。 您必须在regex使用^ (以开头)和$ (以结束)。

var regex = /^a[bc]*$/;
//           ^      ^

如果要匹配较大字符串中的子字符串,请使用单词边界选择器。

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

演示:

 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')); // false 

视觉表现

  相关解决方案