我有一个属于多个域的电子邮件地址列表.我想要一个匹配属于三个特定域的地址的正则表达式(对于这个例子:foo,bar和baz)
所以这些匹配:
这不会:
理想情况下,这些也不匹配(尽管这对于这个特定问题并不重要):
稍微抽象一下这个问题:我想匹配一个包含至少一个给定子串列表的字符串.
Jas*_*hen 112
使用管道符号表示"或":
/a@(foo|bar|baz)\b/
Run Code Online (Sandbox Code Playgroud)
如果您不想要捕获组,请使用非捕获分组符号:
/a@(?:foo|bar|baz)\b/
Run Code Online (Sandbox Code Playgroud)
(当然我假设" a"对于电子邮件地址的前面是可以的!你应该用合适的正则表达式替换它.)
Gre*_*mer 12
^(a|b)@(foo|bar|baz)$
Run Code Online (Sandbox Code Playgroud)
如果你有这个强烈定义的列表.开始和结束字符仅搜索这三个字符串.
使用:
/@(foo|bar|baz)\.?$/i
Run Code Online (Sandbox Code Playgroud)
请注意与其他答案的区别:
\.? -匹配0或1点,以防电子邮件地址中的域“完全限定”$-表示字符串必须以此序列结尾,/i -使测试用例不敏感。注意,这假定每个电子邮件地址都单独位于一行上。
如果要匹配的字符串可能在字符串中的任何位置,请放下$,并将其替换为\s+(匹配一个或多个空格字符)
| 归档时间: |
|
| 查看次数: |
76258 次 |
| 最近记录: |