组合2个正则表达式,其中一个使用OR运算符进行精确匹配
Combining 2 regexes, one with exact match using OR operator
我正在尝试合并:
^[a-zA-Z.][a-zA-Z'''- .]*$
带有
('W|^)first'sname('W|$)
如果正确的话,它应该检查确切的短语,名字。它应该与第一个正则表达式或第二个完全匹配的正则表达式相匹配。我尝试过,但似乎无效:
^(([a-zA-Z.][a-zA-Z'''- .]*$)|(('W|^)first'sname('W|$))
这是在javascript btw.
通常可以通过以下方式简单地组合正则表达式:
Regex1+Regex2=(Regex1|Regex2)
^[a-zA-Z.][a-zA-Z'''- .]*$
+ ('W|^)first'sname('W|$) =
(^[a-zA-Z.][a-zA-Z'''- .]*$|('W|^)first'sname('W|$))
因为一些SO用户很难理解数学类比,这里有一个完整的单词解释。
如果您有一个包含内容REGEX1
的正则表达式和另一个包含属性REGEX2
的正则表达式,并且您希望按照OP在他的问题中描述的方式将它们组合在一起,那么在不进行优化的情况下,一种简单的方法如下。
(REGEX1|REGEX2)
其中,用括号将两个正则表达式括起来,并用|
将两者分开。
您的正则表达式如下:
(^[a-zA-Z.][a-zA-Z'''- .]*$|('W|^)first'sname('W|$))
不过,您的第一个正则表达式中有一个错误,导致它无效。试试这个。
(^[a-zA-Z.][a-zA-Z''- .]*$|('W|^)first'sname('W|$))
您在第二个字符类中有''
,需要'
问题是第一个正则表达式搞砸了。您不需要双重转义字符。因此
''-
将匹配'
(92)和(32)之间的ascii字符。删除其中一个斜线。
参考
相关文章:
- 在 Jquery/Javascript 中使用多个 OR (||) 运算符时如何设置变量
- ||(OR)运算符如何在赋值中工作
- 如何利用“;OR”;用于表单字段验证的运算符
- AND 和 OR 运算符、正则表达式和值长度
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- OR 运算符,用于转义 JavaScript 中的未定义
- 发电机查询中的运算符OR
- javascript函数之间的OR运算符
- 由 OR 运算符分隔的语句的计算顺序
- JavaScript 正则表达式 OR 运算符
- 如果存在值,则使用值,否则使用 or 运算符分配默认值
- 在 JavaScript 中,条件语句中 OR 运算符的正确语法是什么?我错过了什么
- 在 Javascript 中模拟“IN”运算符以简化冗余逻辑 OR 的最佳解决方案是什么?
- 通过使用 AngularJS 遵循 OR 运算符仅过滤对象中的特定字段
- jQuery OR 运算符混淆
- 多个 OR 运算符与 elem.value.match
- 我在 javascript 中是否正确使用了逻辑运算符 OR (||)
- Javascript逻辑运算符OR
- 通过逻辑运算符OR指定默认值
- 逻辑运算符OR问题:jQuery