【问题标题】:RegEx for text field for names - no numbers allowed and cannot be left as blank名称文本字段的正则表达式 - 不允许数字,不能留空
【发布时间】:2013-01-28 16:27:27
【问题描述】:

我正在使用 RegEx 对名称的文本字段进行验证。我正在使用下面的 RegEx,但它不起作用:

^[a-zA-Z,'.\-\s]*$

还有这个:

(?! $)[a-zA-Z ]

请帮忙,谢谢!

【问题讨论】:

  • 什么不起作用?你是匹配太多还是太少?你想让它做什么?显示一些输入和输出。

标签: regex validation textfield


【解决方案1】:

这应该可以工作:^[^\d]+$。这意味着它将查看字符串,如果字符串由至少一个非数字字符组成,它将匹配它。

编辑:

根据@nhahtdh 的评论,上面的正则表达式将允许任何不是数字的东西。你可以使用类似这样的东西:^[A-Za-z.-]+(\s*[A-Za-z.-]+)*$。这将只允许它们之间有空格的字符串。这将阻止用户提供一个充满空格的字段,但如果用户提供如下内容,它将起作用:Hey there. My name is - foo bar。您所拥有的:^[a-zA-Z,'.\-\s]*$^[a-zA-Z,'.\-\s]+$ 的细微调整将允许用户提供空白字段。

【讨论】:

  • 这将允许 !@#($)%"<:}\,]/. 这样的名称通过。
  • @nhahtdh:是的,我知道。根据问题的标题,不允许有数字。我会修改我的答案,以防 OP 是在由字母组成的名称之后。
  • 我认为提出这样的正则表达式有点欺骗性。人们通常只测试他们想要匹配的内容,而忽略测试他们不想匹配的内容。
  • @MaxSmith:很高兴它成功了。如果这对您有所帮助,请将回复标记为答案。这将显示在您的统计数据中,并鼓励人们提出您可能有的任何其他问题;)。
【解决方案2】:

我想这就是你想要的

^(?!\s+$)[a-zA-Z,'. -]+$
  -------
     |->checks if the whole string is blank.if so it won't match

【讨论】:

    【解决方案3】:

    我将这个用于名称,因为在我的情况下,名称不包含特殊字符,它至少包含一个字符和任意数量的中间空格

    [a-zA-Z]+[ a-zA-Z]*
    

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 2021-03-14
      • 1970-01-01
      • 2013-11-17
      • 2016-08-22
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多