javascript - 重复一个可能不存在的匹配模式

标签 javascript regex

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

var regex = \a[bc]*\;

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

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

您将如何应用 *(重复模式)以便它仅在匹配任何内容时作用于前一个字符。

最佳答案

没有。 * 不适用于 regex 中的 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

视觉呈现

enter image description here

关于javascript - 重复一个可能不存在的匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31474075/

相关文章:

json - 如何从Couchbase查询深度嵌套的JSON值?

javascript - PHP/JS : Summarize ajax requests

javascript - 如何使用javascript将两个对象的值合并为一个

javascript - 如何将其添加到函数中以回调 handleChange 和 componentDidMount?

javascript - Rails 自动完成功能适用于父级形式,但不适用于嵌套形式。为什么?

c++ - 使用 QString 替换方法用正则表达式更改文件名

javascript - 查找包含点的键并替换为@

c# - 仅从字符串中获取测量值

c - Lex:查找输入的第一个排列

javascript - 正则表达式将匹配所有整数和 X?