正则表达式以防止尾随空格和额外空格

标签 regex

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

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

  • 没有前导/训练空格 - 如果用户在条目之前或之后键入一个或多个空格,则不允许。
  • 没有双空格 - 如果用户多次键入空格键,则不允许。

  • 我现在用来防止特殊字符的正则表达式如下所示,看起来工作得很好,即:
    ^[a-zA-Z0-9 ]+$
    

    按照其他一些想法,我尝试了所有这些选项,但它们不起作用:
    ^\A\s+[a-zA-Z0-9 ]+$\A\s+
    /s*^[a-zA-Z0-9 ]+$/s*
    

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

    谢谢。

    最佳答案

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

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

    regex demo .

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

    作为替代方案,这里有一个基于前瞻的正则表达式(但效率较低):
    ^(?!.* {2})(?=\S)(?=.*\S$)[a-zA-Z0-9 ]+$
    

    regex demo
    (?!.* {2})不允许连续空格和 (?=.*\S$)要求字符串末尾有一个非空白字符,并且 (?=\S)一开始就需要它。

    关于正则表达式以防止尾随空格和额外空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373046/

    相关文章:

    用于匹配 anchor 否定和字符串的正则表达式

    java - String ReplaceAll 方法不起作用

    javascript - 查找文本中的日期

    ios - NSRegularExpression 用于获取html内容中的所有下载链接

    Javascript 正则表达式再次捕获

    MySQL SELECT LIKE 或 REGEXP 匹配一条记录中的多个单词

    c# - 用于验证数值的正则表达式

    php - 在 htaccess 中重定向

    java - 正则表达式匹配任何数字,除非它是特定字符串的一部分

    javascript - 带小数的数字的正则表达式