我有两个正则表达式,它们分别运行良好。
第一个正则表达式:
(.*[\w].*)
//这意味着测试至少包含一个非特殊字符。
第二个正则表达式:
.{3,}.
//文字大于3个字符。
所以我想要两个结合这两个正则表达式。匹配大于3个字符且至少包含一个非特殊字符的文本。
我的测试文字:
asd
//不匹配
asd@
//匹配
@@{{@}@{a
//匹配
@@{}@{}
//不匹配
*/*/*/*/+
不匹配
5542
//匹配
@{}43
//匹配
答案 0 :(得分:2)
您可以实现这一目标的一种方法是使用正向前瞻,断言非符号字符在模式中至少出现一次。然后匹配长度为4或更长的任何东西(断言已经保证你的非符号字符存在)。
^(?=.*[\w].*).{4,}$
<强>解释强>
^(?=.*[\w].*) assert that what follows the start of the string
includes one (or more) non symbol characters
.{4,}$ match any character four or more times
在这里演示:
答案 1 :(得分:1)
我认为没有一般方式交叉两个正则表达式,但是这个可以被重新表述为
的交替(联合)例如:
/.*\w...+|.+\w..+|.+.\w.+|...+\w.*/
(Another solution演示了一种更通用的方式来实现与AND非常相似的东西。)