正则表达式与 "AND" 运算符连接
Regex concat with "AND" opeartor
我想用 AND 运算符连接两个正则表达式(我不知道这是否可能...)所以只有当字符串匹配 RegEx1 和 RegEx2 时才会发生匹配。
RegEx1: [a-g]+
RegEx2: [b-z]+
Example1 : String "bcd" match
Example2 : String "hijk" not match
使用 OR 运算符很容易,但是对于 AND 我找不到解决方案。
您可以使用正向先行运算符 (?=)
来组合表达式:
(?=[a-g]+)(?=[b-z]+)
这里有一个 fiddle 来测试它:https://regex101.com/r/kyy6XZ/1
在这种情况下,它在逻辑上等同于 [b-g]+
,这意味着它应该匹配在 b
到 g
区间内包含一个或多个字母的任何字符串,包括边界。
使用正向前瞻结合 'start and end of string' 锚点来确保匹配整个字符串并且不存在 "illegal" 个字母:
^(?=[a-g]+$)(?=[b-z]+$).*
我想用 AND 运算符连接两个正则表达式(我不知道这是否可能...)所以只有当字符串匹配 RegEx1 和 RegEx2 时才会发生匹配。
RegEx1: [a-g]+
RegEx2: [b-z]+
Example1 : String "bcd" match
Example2 : String "hijk" not match
使用 OR 运算符很容易,但是对于 AND 我找不到解决方案。
您可以使用正向先行运算符 (?=)
来组合表达式:
(?=[a-g]+)(?=[b-z]+)
这里有一个 fiddle 来测试它:https://regex101.com/r/kyy6XZ/1
在这种情况下,它在逻辑上等同于 [b-g]+
,这意味着它应该匹配在 b
到 g
区间内包含一个或多个字母的任何字符串,包括边界。
使用正向前瞻结合 'start and end of string' 锚点来确保匹配整个字符串并且不存在 "illegal" 个字母:
^(?=[a-g]+$)(?=[b-z]+$).*