2017-04-09 246 views
0

我有兩個正常運行良好的正則表達式。如何將兩個正則表達式與AND結合使用?

第一正則表達式:

(.*[\w].*) //這意味着測試含有至少一個非特殊字符。

二的正則表達式:

.{3,}. //文本比3字符更大。

所以我想兩個結合這兩個正則表達式。匹配大於3個字符的文本並至少包含一個非特殊字符。

我的測試文本:

asd //不匹配

[email protected] //匹配

@@{{@}@{a //匹配

@@{}@{} //不匹配

*/*/*/*/+不匹配

5542 //匹配

@{}43 //匹配

回答

2

一種方法是使用一個積極的預測先行斷言非符號字符出現在模式至少一次。然後匹配長度爲四或更長的任何東西(斷言已經保證你的非符號字符存在)。

^(?=.*[\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 

演示在這裏:

Regex101

1

我不認爲有相交的2個正則表達式的一般的方式,但是這一次可以重新表述爲交替(工會),的

  • 非特殊字符,接着是三個字符,
  • 非特殊字符,由兩個字符,
  • 非特殊字符,由兩個字符之前和之後一個字符,
  • 非特殊字符之前,一個字符之前和隨後兩個字符,
  • 非特殊字符,通過字符你

例如前面:

/.*\w...+|.+\w..+|.+.\w.+|...+\w.*/ 

Another solution演示實現的東西非常喜歡的和更普遍的方式。)就可以實現這個