将两个不同的正则表达式合并为一个(要用与的关系)

我有两个正则表达式,我想用与的关系合并,该怎么做?
String regEx2 = "^(?=.*\d+)(?!.*?([\d])\1{5})[\d]{6}$";
String regEx3 = "(\b(?!123456\b)\d+)";
String regEx31 = "(\b(?!234567\b)\d+)";
String regEx32 = regEx3+"|"+regEx31;
把ex2和ex32合并(忽略我渣渣的正则写法--!,一定要用与的关系)

5个回答

可以用零宽断言来实现。 例如: 合并下列正则表达式: A. 必须包含数字的正则表达式 .*\d B. 必须包含英文的正则表达式 .*[a-zA-Z] C. 字符串长度是8-12位的正则表达式 ^.{8,12}$ 合并后结果: (?=.*\d)(?=.*[a-zA-Z])^.{8,12}$ 表示必须包含数.

jokercat
jokercat 通过你的思路,还是写出来了个更辣鸡的,反正能凑合用了,谢谢啦
2 年多之前 回复
jokercat
jokercat 本人愚钝,不太理解您的意图,虽然也按着这么写了,但是似乎还是不对,请大神指点一二 ~~
2 年多之前 回复

往里面合并就OK啊?

jokercat
jokercat 请大神合并一下,然后我试试
2 年多之前 回复

直接合并就可以啊

jokercat
jokercat 请大神合并一下,然后我试试
2 年多之前 回复

合并是为了二者都能使用,还是要做判断或的关系。分开用最好还是不要合并

jokercat
jokercat 如果是ifelse判断的话,我就直接写了,并且网上有很多比我这种写法强很多的表达式,可是我调用的一个第三方jar中的方法就是要在参数里传一个正则表达式字符串,显然传进去之后,他只能识别正则表达式是true的情况,所以,我也没办法,我没法分着写
2 年多之前 回复

String regEx2 = "^(?=.*\d+)(?!.*?([\d])\1{5})[\d]{6}$";
String regEx3 = "(\b(?!123456\b)\d+)";
String regEx31 = "(\b(?!234567\b)\d+)";
String regEx32 = regEx3+"|"+regEx31+"|"+regEx32;

说实话,没有看明白你想提取什么东西出来
而且,就我所知,根本就没有所谓的对正则表示式求与运算的这个说法,
如果,非要‘与’运算,你得重新分析客户的要求,然后重新设计正则表达式,使新设计出来的正则表达式刚好符合客户的外行眼中的与运算

如果直接给两个正则表达式,让人求与,我实在没发想象这需要多么大的一个脑洞才可以完成这个事!!!

jokercat
jokercat String regEx32 = regEx3+"|"+regEx31+"|"+regEx32;这个我写错了,应该是String regEx32 = regEx3+"|"+regEx31;这样的.然后其实我也不想把正则表达式写成类似与if(条件&&条件)这样,可是,第三方的方法里面的参数就是一个是字符串的正则表达式,并且只能是正则表达式是true的情况下.如果可以用if()else的话,我也不愿意费劲自己写正则,尤其是这么渣渣的正则
2 年多之前 回复
立即提问
相关内容推荐