【问题标题】:Regex to prevent trailing spaces and extra spaces正则表达式以防止尾随空格和额外空格
【发布时间】:2016-05-24 05:15:42
【问题描述】:

现在我有一个正则表达式可以防止用户输入任何特殊字符。唯一允许的字符是 A 到 Z、0 到 9 或空格。

我想改进这个正则表达式以防止出现以下情况:

  1. 没有前导/培训空格 - 如果用户在输入之前或之后输入一个或多个空格,则不允许。
  2. 无双空格 - 如果用户多次键入空格键,则不允许。

我现在用来防止特殊字符的正则表达式如下,看起来工作得很好,即:

^[a-zA-Z0-9 ]+$

根据其他一些想法,我尝试了所有这些选项,但它们都不起作用:

^\A\s+[a-zA-Z0-9 ]+$\A\s+
/s*^[a-zA-Z0-9 ]+$/s*

我可以帮我处理这段代码吗?同样,我只想要字母 A-Z、数字 0-9,并且没有前导或尾随空格。

谢谢。

【问题讨论】:

  • 喜欢^(?!.* {2})(?=\S.*\S$)[a-zA-Z0-9 ]+$?是 C# 吗?
  • 什么编程语言?

标签: regex


【解决方案1】:

您可以使用以下正则表达式:

^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+)*$

regex demo

正则表达式将匹配开头的字母数字(1 个或多个),然后匹配零个或多个单个空格块,后跟一个或多个字母数字。

作为替代方案,这是一个基于前瞻的正则表达式(但效率较低):

^(?!.* {2})(?=\S)(?=.*\S$)[a-zA-Z0-9 ]+$

regex demo

(?!.* {2}) 不允许连续的空格,(?=.*\S$) 要求字符串末尾有一个非空格,(?=\S) 要求在开头。

【讨论】:

  • 不错。虽然替代方案没有捕获有效的 1 字符字符串。
  • 工作就像一个魅力。非常感谢!
  • @wiktor-stribiżew 我在命名捕获中遇到尾随空格问题,但无法使其正常工作,您能否指导我了解我所缺少的内容? Link to RegExp“联系人”一词必须包含在匹配搜索词中,这就是我想要实现的目标。
  • @wiktor-stribiżew 我还希望最后一个输入(单个单词)匹配。可能吗? Expected Result
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多