如何使用正则表达式仅匹配某些字符?

4

我想使用正则表达式检查一个字符串是否仅与某些字符匹配。

例如,我只想匹配ab或者c

因此,字符串 "aaacb" 将通过匹配,但 "aaauccb" 不会(因为其中包含了字母 u)。

我尝试过以下方法:

/[a|b|c]+/

但它不起作用,因为失败的示例已经通过了。

3个回答

8

您需要确保字符串仅由这些字符组成,通过将正则表达式锚定在字符串的开头和结尾来实现:

/^[abc]+$/

你混淆了两个概念。Alternation(应该是 (a|b|c))和字符类(应该是 [abc])。在这种情况下,它们是等效的。你的版本也会将 | 视为字符。

0
 /[^abc]/

这是一个直接从rubular复制的例子。它匹配除了a、b或c之外的任何单个字符。


是的,这使事情变得简单了一些。但请注意,所需检查的结果需要被反转,并且非空字符串的检查现在必须分开进行。 - Martin Ender
这与空字符串边缘情况中所述的行为不同。 - Deestan

-1

尝试使用[abc]+

它将匹配a、b或c。


1
...但仍允许包含其他字符的字符串 - Martin Ender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接