Regex 带有alpha、连字符、下划线和点字符的正则表达式

Regex 带有alpha、连字符、下划线和点字符的正则表达式,regex,Regex,我写了一个正则表达式: /^[a-zA-Z\-\_\. ]{2,60}$/ 不管它允许什么,它都能很好地工作。。。甚至-"。作为输入输入(至少没有2个alpha),我不希望这样。例如,我可以有-aa,a-a,aa---(其他字符也是如此) 要求字符串中至少有2个字母,所提到的连字符和其他2个非字母符号可以位于字符串中的任何位置。使用 /^(?=(?:[^a-zA-Z]*[a-zA-Z]){2})[-_. a-zA-Z]{2,60}$/ 见 详细信息: ^-字符串的开头 (?=(?:[^a-

我写了一个正则表达式:

/^[a-zA-Z\-\_\. ]{2,60}$/
不管它允许什么,它都能很好地工作。。。甚至-"。作为输入输入(至少没有2个alpha),我不希望这样。例如,我可以有-aa,a-a,aa---(其他字符也是如此)

要求字符串中至少有2个字母,所提到的连字符和其他2个非字母符号可以位于字符串中的任何位置。

使用

/^(?=(?:[^a-zA-Z]*[a-zA-Z]){2})[-_. a-zA-Z]{2,60}$/

详细信息

  • ^
    -字符串的开头
  • (?=(?:[^a-zA-Z]*[a-zA-Z]){2}
    -字符串中至少有2个alpha字符(即,必须连续出现两次:
    • [^a-zA-Z]*
      -除ASCII字母外,零个或多个字符
    • [a-zA-Z]
      -一个ASCII字母)
  • [-\.a-zA-Z]{2,60}
    -2到60次允许的字符
  • $
    -字符串结尾
注意:如果位于字符类的开始/结束处,则不需要转义
-
\u
是一个单词char,无需在任何地方转义它。
不需要在字符类内转义

要告诉正则表达式引擎将
-
字符限制为字符串中的最大10个字符,请在
(?!(?:[^.\u-]*[.\ u-]){11}之后添加
^
锚定符:

/^(?!(?:[^._-]*[._-]){11})(?=(?:[^a-zA-Z]*[a-zA-Z]){2})[-_. a-zA-Z]{2,60}$/

你能澄清一下规则吗?字符串中至少有2个字母?或者干脆不允许没有字母的字符串?要清楚的是,您希望至少有两个字母字符吗?然后可能会出现连字符、下划线、句点和空格的任意组合?对不起,是的,字符串中至少有2个字母。这是一个要求。所提到的连字符和其他2个字符可以在任何地方。理想情况下,最多十个(例如)。我可以添加十个连字符、点或十个分数吗?是的,在
^
@Wiktor Stribiże:完成配对后添加
(?!(?:[^.\u-]*[.\ u-]){11}