【问题标题】:Regular expression for not allowing spaces in the input field输入字段中不允许有空格的正则表达式
【发布时间】:2013-05-02 09:37:31
【问题描述】:

我的表单中有一个用户名字段。我不想在字符串中的任何地方允许空格。我用过这个正则表达式:

var regexp = /^\S/;

如果字符之间有空格,这对我有用。也就是说,如果用户名是ABC DEF。如果一个空格在开头,它就不起作用,例如<space><space>ABC。正则表达式应该是什么?

【问题讨论】:

  • 请显示更多代码并描述您想要的。另外,您确定您使用的是 PHP 吗? 'var ...' 更像是 Javascript。
  • @WillemMulder 我也在使用 javascript

标签: javascript regex


【解决方案1】:

虽然您指定了start anchor 和第一个字母,但您还没有对字符串的其余部分执行任何操作。您似乎想要repetition 中的character class 直到end of the string

var regexp = /^\S*$/; // a string consisting only of non-whitespaces

【讨论】:

    【解决方案2】:

    使用+加号(匹配前面的一项或多项),

    var regexp = /^\S+$/
    

    【讨论】:

    • 你不说为什么,反正也没关系:目的是检测空白的存在,我们不在乎有多少。
    • @Rikesh 在我们开始输入空格时仍然没有检测到空格
    • @AnazA - 您可以在 regexpal.com 进行检查,它工作正常。似乎代码方面一定有问题。如果您可以分享更多您的代码。
    • @AnazA - Ohh Cool :) 快乐编码!!
    【解决方案3】:

    如果你正在使用一些插件,它接受字符串并使用构造正则表达式来创建正则表达式对象 i:e new RegExp()

    比下面的字符串可以工作

    '^\\S*$'
    

    同样的正则表达式 @Bergi 提到了新 RegExp 构造函数的字符串版本

    【讨论】:

      【解决方案4】:

      这将有助于找到开头、中间和结尾的空格:

      var regexp = /\s/g

      【讨论】:

      • 嗨阿什什亨德卡!我认为标志 g 是不必要的。 /\s/ 匹配第一个 Unicode 空白字符,无论它位于字符串中的什么位置。我的意思是,旗帜无论如何都会起作用,但它是可有可无的。
      • 嗨,Pablo,实际上是的,它可以工作,但我已经写过是否存在文本区域,我们必须检查多行才能找到空白字符。在这种情况下,/g 可以提供帮助。
      • 如果字符串是多行字符串 /\s/g 或 /\s/ 将匹配换行符,因为换行符被视为空白字符,请参阅此示例 jsfiddle.net/Pablocattaneo/j2fkdy6o/1
      • @Pablo,感谢您分享示例。详细说明提及 /g 的要点。举个例子,如果我们有一个像 'abc def xyz' 这样的字符串,/\s/ 将匹配 c 之后在索引 3 处第一次出现的空白,而 /\s/g 将匹配 c 和 f 之后分别在索引 3 和 7 处出现的所有空格。我已经给出了通用解决方案。简单地说 /g 是全局的(不要在第一次匹配时停止,考虑所有匹配)。
      【解决方案5】:

      如果没有空格,这个只会匹配输入字段或字符串。如果有空格,则根本不匹配。

      /^([A-z0-9!@#$%^&*().,<>{}[\]<>?_=+\-|;:\'\"\/])*[^\s]\1*$/

      从行首匹配到行尾。接受字母数字字符、数字和大多数特殊字符。

      如果您只想要字母数字字符,请更改 [] 中的内容,如下所示:

      /^([A-z])*[^\s]\1*$/

      【讨论】:

        猜你喜欢
        • 2012-12-08
        • 1970-01-01
        • 2016-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        相关资源
        最近更新 更多