【问题标题】:Javascript regex - no white space at beginning + allow space in the middleJavascript 正则表达式 - 开头没有空格 + 中间允许空格
【发布时间】:2013-11-14 09:15:52
【问题描述】:

我想要一个正则表达式,它匹配开头没有空格的字符串。但是中间包含空格的字符串可以匹配。到目前为止,我已经尝试过以下

[^-\s][a-zA-Z0-9-_\\s]+$

Debuggex Demo

Above 不允许开头有空格,但也不允许出现在字符串的中间/结尾。请帮帮我。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    如果您打算匹配与您的模式匹配的任意长度的字符串(甚至是空字符串)并且不以空格开头,请在^ 之后使用(?!\s): p>

    /^(?!\s)[a-zA-Z0-9_\s-]*$/
      ^^^^^^
    

    或者,请记住 JS 正则表达式中的 [A-Za-z0-9_] 等于 \w

    /^(?!\s)[\w\s-]*$/
    

    (?!\s) 是一个否定前瞻,它匹配字符串中没有紧跟空格的位置(与\s 模式匹配)。

    如果您想在字符串开头添加更多“禁止”字符(看起来您也不允许使用-),请继续在前瞻中使用[\s-] 字符类:

    /^(?![\s-])[\w\s-]*$/
    

    要匹配至少 1 个字符,请将 * 替换为 +

    /^(?![\s-])[\w\s-]+$/
    

    请参阅regex demo。 JS 演示:

    console.log(/^(?![\s-])[\w\s-]+$/.test("abc   def 123 ___ -loc-   "));
    console.log(/^(?![\s-])[\w\s-]+$/.test("  abc   def 123 ___ -loc-   "));

    【讨论】:

      【解决方案2】:

      在开头使用 \S

      ^\S+[a-zA-Z0-9-_\\s]+$
      

      【讨论】:

        【解决方案3】:

        你需要使用这个正则表达式:

        ^[^-\s][\w\s-]+$
        
        • 使用启动锚^
        • 无需双重转义\s
        • 同样重要的是使用连字符作为字符类中的第一个或最后一个字符。
        • \w[a-zA-Z0-9_] 相同

        【讨论】:

          【解决方案4】:

          此 RegEx 不允许在开头或结尾处使用空格。您的字符串/单词并允许所有特殊字符。

          ^[^\s].+[^\s]$
          

          这个正则表达式也很好用

          ^[^\s]+(\s+[^\s]+)*$
          

          【讨论】:

            【解决方案5】:

            试试这个应该可以的

            [a-zA-Z0-9_]+.*$
            

            【讨论】:

              【解决方案6】:

              /^[^.\s]/

              • 试试这个,它不允许用户首先输入字符
              • ^ 匹配字符串第一个字符之前的位置
              • 。匹配单个字符。它是什么字符无关紧要,换行符除外
              • \s 是空格

              【讨论】:

                【解决方案7】:

                在您的第二个字符类中,\\s 将匹配 \s,而不是 \s。因此它不匹配空格。你应该在那里只使用\s。另外,将连字符移到末尾,否则会在字符类中创建意外范围:

                ^[^-\s][a-zA-Z0-9_\s-]+$
                

                【讨论】:

                  【解决方案8】:

                  如果您的用户名字段只接受字母和中间空格,而不接受开头和结尾

                  用户名: /^[^\s][a-zA-Z\s]+[^\s]$/

                  如果您的用户 ID 字段仅接受字母、数字和下划线且不允许有空格

                  用户 ID: /^[\w]+$/

                  如果您的密码字段只接受字母、数字和特殊字符,则不允许使用空格

                  密码: /^[\w@#&]+$/

                  注意:\w内容a-zA-Znumber、下划线(_)如果添加更多字符,请在\w之后添加特殊字符。

                  您可以与密码字段中的用户 ID 和密码字段进行比较,我只添加一些特殊字符 (@#&)。

                  印度公众喜欢?

                  【讨论】:

                    【解决方案9】:

                    我建议使用下面的正则表达式,

                    ^[^\s].*[^\s]$

                    您可以在here 中尝试正则表达式

                    【讨论】:

                      猜你喜欢
                      • 2021-06-27
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-03-06
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多