2017-05-10 159 views
0

我需要正則表達式來限制我的代碼中的字符串。 下面是字符串的批評。正則表達式來限制字符

  1. 只有字母數字字符和。 (點)和 - (連字符)是允許的。
  2. 不應該以。或者 - 應該以數字或字母開頭。
  3. 整個字符串中只允許使用一個連字符。
  4. 允許使用多個點。但不應該允許連續的點。 (例如:。DDD被允許但d ..不允許
  5. 連續的 - 並且也不允許(如:D-是不允許的)

    /^([a-zA-Z\d]+[\.]?[a-zA-Z\d]{0,1})[\-]?([a-zA-Z\d]+[\.][a-zA-Z\d]{0,1})+$/ 
    

我寫上面的表達,但它違反了第5點它允許 - 。點後

回答

3

2. ^[a-zA-Z\d](允許第一個字符)
1. ... [-.a-zA-Z\d]*$(允許的其他字符)
3. (?!.*-.*-) ...(不允許兩個連字符)
4. (?!.*\.\.) ...(不允許..
5. (?!.*-\.|\.-) ...(不允許.--.

總之現在(與負先行重構一起):在100K

^(?!.*(?:-(?:.*-|\.)|\.[.-]))[a-zA-Z\d][-.a-zA-Z\d]*$ 
+0

恭喜! – Tushar

+1

@Tushar:謝謝!拿到贓物! \ o/ – Amadan

+0

不允許單個字符作爲有效的字符串,儘管...不知道這是OP的要求的一部分 –