2010-11-12 87 views
1

正則表達式我想正則表達式來測試一個字符串是否符合以下規則:文件夾名

  1. 它不能與.開始。
  2. 它不得以.結束。
  3. 它不能包含特殊字符,如[email protected]#$%^&*,但可以包括.
  4. 它不能包含兩個點.並排。

樣品有效輸入:

  • na.me(在中間單點)

樣品無效輸入:

  • .name(開始點)
  • name.(以點結尾)
  • na..me(包括兩個點側由端)
  • $name(特殊字符不允許在任何位置)
  • name#(同樣)
  • na#me(同樣)
+1

爲什麼要使用正則表達式?爲什麼不測試一下字符串是否滿足這些屬性?您將最終做到這一點,以便爲用戶提供有意義的反饋(「名稱不能以句點(。)」開頭)。 – 2010-11-12 02:33:59

+0

因爲我想使用正則表達式驗證。謝謝。 – 2010-11-12 02:52:06

回答

4

相信這應該工作:

^(\w+\.?)*\w+$ 

如果不是在ECMAScript中,則將\w[a-zA-Z_0-9]

這裏的方法是,不是引用什麼是不可接受的,而是引用什麼是可接受的。
翻譯表達的是:

  • 開始與一個或多個字母,接着是零個或一個週期所有這些
    • 可出現零或多次
  • 結束(。)至少有一個字母
+0

非常感謝。你的翻譯啓發了我。再次感謝。 – 2010-11-12 02:51:14

+2

其他有效的字符如空格或' - '或'('或')'怎麼辦?正則表達式不考慮這些字符。 – Dorian 2012-01-01 12:31:31

+0

@Dorian'/ ^([\ w | \(| \)\ [| \] \ - | \。] + \。?)* [\ w | \(| \)\ [| \] \ - | \。] + $/g'也可能是這樣的?這是一種骯髒的解決方法 – bluejamesbond 2014-05-24 01:03:43