任何匹配模式的方法,要么在某个字符之前,要么在某个字符之后
Any way to match a pattern EITHER preceded OR followed by a certain character?
例如,我想匹配以下所有字符串:
"ABC"咔嚓"支链氨基酸"驾驶室"拉克布"啦"巴克尔"
但不是以下任何一项:
"拉布克尔"啪"RBCAR"
正则表达式可以做到这一点吗?
最简单的方法是使用交替:
/^(?:[abc]{3}r?|r[abc]{3})$/
解释:
^ # Start of string
(?: # Non-capturing group:
[abc]{3} # Either match abc,cba,bac etc.
r? # optionally followed by r
| # or
r # match r
[abc]{3} # followed by abc,cba,bac etc.
) # End of group
$ # End of string
一些正则表达式引擎支持条件,但JavaScript不在其中。但是在 .NET 中,你可以这样做
^(r)?[abc]{3}(?(1)|r?)$
无需在同一个正则表达式中编写两次字符类。
解释:
^ # Start of string
(r)? # Match r in group 1, but make the group optional
[abc]{3} # Match abc,cab etc.
(?(1) # If group 1 participated in the match,
# then match nothing,
| # else
r? # match r (or nothing)
) # End of conditional
$ # End of string
JavaScript 中的另一种解决方案是使用否定的前瞻断言:
/^(?:r(?!.*r$))?[abc]{3}r?$/
解释:
^ # Start of string
(?: # Non-capturing group:
r # Match r
(?!.*r$) # only if the string doesn't end in r
)? # Make the group optional
[abc]{3} # Match abc etc.
r? # Match r (optionally)
$ # End of string
相关文章:
- 删除字符串中第5个字符之后的所有字符
- 查找上一个<p>在第n个字符之后
- 按键时的Javascript事件,但在输入字符之后
- 任何匹配模式的方法,要么在某个字符之前,要么在某个字符之后
- Reg ex 表示特定字符之后和其他字符之间的任何内容
- 如何在字符串中的第二个字符之后插入字符
- 在 n 个字符之后剪一个字符串,但如果它在一个单词的中间,则剪掉整个单词
- 阅读更多按钮 类别描述 在某些关于字符之后
- 如何在文本的每 5,000 个字符之后的第一个
或
之后插入一个 - 如何在 JavaScript 中获取最后一个特定字符之后的子字符串
- 检查regex是在字符串的开头还是在特定字符之后开始
- regex匹配第一个字符之前和最后一个字符之后的空格或符号之间的字符串
- 输入字段限制为9个字符,并且在3个字符之后自动广告“0”-&”;
- 替换URL中最后一个字符之后的所有内容
- Javascript防止在n utf8字符之后写入表单元素
- 在提交表单之前,Javascript在X字符之后删除
- 对输入的字符进行计数,并在x个字符之后增加一个变量
- 如何移除特定字符之后的所有内容
- 如何在HTML中某些字符之后换行
- Jquery -在字符串的第一个字符之后添加字符