如何组合两个正则表达式条件?
我正在尝试用JavaScript编写与两个条件A和B进行AND运算的正则表达式
(A)(B)
显然不是有效的解决方案。
我的两个正则表达式是:
^((?=.*?(.*([.]).*)[^@])[^@]+)$
<2-2]>
所以
^((?=.*?(.*([.]).*)[^@])[^@]+)(((?!..).)*)$
不与两个正则表达式
我怎么能做到这一点?是否有一般规则?
解决方案
有时,没有明显的方法来组合TO表达式。如您所说,(A)(B)
无效。由于正则表达式不是一种编程语言,因此实现您想要的功能的"显而易见的"方法是:
var doesMatch = string.match(/(A)/) && string.match(/(B)/);
如果不花时间真正破译你想要匹配的内容,就很难说出是否有一种不明显的方式来结合这两个表达方式……我只能说,没有一个通用的规则来结合它们。
此外,组合两个正则表达式并不一定意味着它更快。以字符串foo bar
和表达式^foo
和bar$
为例。这两个表达式的"明显"组合是^foo.*?bar$
;然而,^foo
和bar$
分别为5步,而组合后的版本为11步。
相关文章