2016-03-26 35 views
1

我想用下面的限制來創建一個正則表達式,但也許我錯過了一些東西,因爲它會產生錯誤的輸出。創建滿足多個條件的正則表達式

限制:

1)字符串不應包含數字僅

2)字符串不應含有超過3個特殊字符

3)STRING還沒有任何字(子串),其具有長度超過10個字符

4)字符串長度必須大於或等於3

我已經創建了一個正則表達式的一種解決第一點:

/^\d*[a-zA-Z][a-zA-Z\d]*$/ 

但我沒有通過添加其他限制2-4。

+0

我不明白你的所有限制:1)你想你的串Ca n不只包含數字? 2)什麼是「特殊」字符? 3)根本不理解第3點(猜猜:不允許背後10個字符?!) – Rizier123

+0

1)整個字符串不應該只有數字2)字符串不應該有超過3個特殊字符($,&, %,@)3)字符串有很多單詞,所以每個單詞的長度應該少於10個字符。 4)整個字符串長度不得少於3個字符。 –

+0

4.使用strlen()會更容易閱讀。 – Andreas

回答

0

你可以使用像

^(?!\d+$)(?!(?:[^$&%@]*[$&%@]){4})(?!.*\b\w{11}).{3,}$ 

正則表達式見regex demo

模式細分:

  • ^ - 字符串的開始
  • (?!\d+$) - 必須不存在唯一的數字( \d+)直到字符串的末尾($
  • (?!(?:[^$&%@]*[$&%@]){4}) - 必須不存在的0+非特殊字符([^$&%@]*)4個序列,隨後以特殊字符
  • (?!.*\b\w{11}) - 必須不存在一個字邊界之後具有11個字字符(\w{11})字(\b
  • .{3,} - 3+任何字符
  • $ - 字符串的結尾
+1

嘿@wktor你是偉大的。這很好。非常感謝你 –

+0

嗨能否請您轉換上面MySQL查詢兼容的正則表達式。因爲我收到錯誤:從regexp得到錯誤'重複操作符操作數無效'。當使用MySQL查詢 –

+0

這是不可能的,MySQL的REGEXP不支持lookarounds。 –