正则表达式限制字符

时间:2017-05-10 04:31:54

标签: javascript regex

我需要使用正则表达式来限制代码中的字符串。 以下是字符串的批评。

  1. 仅限字母数字字符和。 (点)和 - (连字符)是允许的。
  2. 不应该以。或 - 应以数字或字母开头。
  3. 整个字符串中只允许使用一个连字符。
  4. 允许使用倍数点。但不应该允许连续点。 (例如: d.d.d 是允许的。但 d .. 是不允许的。
  5. 连续 - 和。也是不允许的。 (例如: d - 。是不允许的)

    /^([a-zA-Z\d]+[\.]?[a-zA-Z\d]{0,1})[\-]?([a-zA-Z\d]+[\.][a-zA-Z\d]{0,1})+$/
    
  6. 我写了上面的表达。但它违反了第5点。它允许 - 点后。

1 个答案:

答案 0 :(得分:3)

2。 ^[a-zA-Z\d](允许第一个字符)
1. ... [-.a-zA-Z\d]*$(允许其他字符)
3. (?!.*-.*-) ...(不允许使用两个连字符)
4. (?!.*\.\.) ...(不允许..
5. (?!.*-\.|\.-) ...(不允许.--.

现在一起(将负面前瞻一起重构):

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