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

Regex 防止尾随空格和额外空格的正则表达式,regex,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\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]+)*$
    

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

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


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

    类似于
    ^(?!.*{2}(?=\S.\S$)[a-zA-Z0-9]+$
    ?是C?什么编程语言?很好。尽管另一种方法无法捕获有效的1字符字符串,但它的工作方式非常有效。多谢各位@wiktor stribiżew我对命名捕获中的尾随空间有问题,但无法使其工作,请您指导我缺少什么?“联系人”一词必须包含在匹配搜索词中,这正是我想要实现的。@HenonoaH Maybe?@wiktor stribiżew我还希望最后一个输入(一个单词)匹配。可能吗?
    ^(?!.* {2})(?=\S)(?=.*\S$)[a-zA-Z0-9 ]+$