当前位置:  开发笔记 > 编程语言 > 正文

正则表达式检测几个字符串之一

如何解决《正则表达式检测几个字符串之一》经验,为你挑选了3个好方法。

我有一个属于多个域的电子邮件地址列表.我想要一个匹配属于三个特定域的地址的正则表达式(对于这个例子:foo,bar和baz)

所以这些匹配:

    一个@ FOO

    一间酒吧

    b @巴兹

这不会:

    一个@ fnord

理想情况下,这些也不匹配(尽管这对于这个特定问题并不重要):

    一个@ foobar的

    b @ foofoo

稍微抽象一下这个问题:我想匹配一个包含至少一个给定子串列表的字符串.



1> Jason Cohen..:

使用管道符号表示"或":

/a@(foo|bar|baz)\b/

如果您不想要捕获组,请使用非捕获分组符号:

/a@(?:foo|bar|baz)\b/

(当然我假设" a"对于电子邮件地址的前面是可以的!你应该用合适的正则表达式替换它.)


嗯,我不认为我错过了什么.我的正则表达式匹配第一个列表但不匹配接下来的两个列表,并指示如何在正则表达式中执行"或",这将回答最后一部分.

2> Gregory A Be..:
^(a|b)@(foo|bar|baz)$

如果你有这个强烈定义的列表.开始和结束字符仅搜索这三个字符串.



3> Alnitak..:

使用:

/@(foo|bar|baz)\.?$/i

请注意与其他答案的区别:

\.? -匹配0或1点,以防电子邮件地址中的域“完全限定”

$-表示字符串必须以此序列结尾,

/i -使测试用例不敏感。

注意,这假定每个电子邮件地址都单独位于一行上。

如果要匹配的字符串可能在字符串中的任何位置,请放下$,并将其替换为\s+(匹配一个或多个空格字符)

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有