正则表达式,允许使用空格,在一个字符串,但不是唯一的空白正则表达式,允许使用空格,在一个字符串,但不

2019-05-12 04:36发布

我需要编写表单验证正则表达式,它允许在字符串中空格,但不允许只空格。

例如- 'Chicago Heights, IL'将是有效的,但如果用户只是敲空格键任意次数和命中进入的形式将不进行验证。 之前的验证,我已经试过运行的if (foo != null)然后运行正则表达式,但按下空格键仍然注册的人物,所以这是行不通的。 下面是我使用的是什么,现在允许的空间:

^[-a-zA-Z0-9_:,.' ']{1,100}$

Answer 1:

我不知道你需要一个RegEx在这里。 为什么不打电话给你的语言的Trim()方法,然后确保得到的字符串非空?



Answer 2:

这很简单: .*\S.*

这需要一个非空格字符,在任何地方。 正则表达式的语法是对Perl 5个对应的正则表达式,如果你有另一种语言,语法可能会有所不同一点。



Answer 3:

下面将回答你的问题是写的,但看到我的额外注后:

^(?!\s*$)[-a-zA-Z0-9_:,.' ']{1,100}$

说明: (?!\s*$)是负先行 。 它的意思是:“下面的文字所无法比拟的子模式\s*$ ”。 当你把子模式考虑在内,它的意思是:“以下人物既不是空字符串,也不是空白一路到最后一个字符串。因此,必须有至少一个非空白字符这点在后。字符串“。 一旦你的规则出的方式,你可以自由地让你的性格类空间。

额外注:我不认为你' '做你想要什么。 它看起来像你试图代表空格字符,但正则表达式的解释'作为文字撇号。 内部的字符类, ' '将意味着“匹配任何字符要么是'一个空格字符,或' ”(注意的是,第二'字符是冗余的)。 我怀疑你想要的是更多这样的:

^(?!\s*$)[-a-zA-Z0-9_:,.\s]{1,100}$


Answer 4:

你可以使用简单:

^(?=.*\S).+$

如果您正则表达式引擎支持积极的向前看符号。 该表达式需要至少一个非空格字符。

看到它在rubular 。



Answer 5:

如果我们想只允许字符集,然后我试图与应用验证USERNAME_REGEX = /^(?:\s*[.\-_]*[a-zA-Z0-9]{1,}[.\-_]*\s*)$/;

  • 字符串可以包含任意数量的空格开头或结尾或在两者之间,但至少包含一个字母数字字符。
  • 可选., _ , -字符也被允许的,但字符串必须有一个字母数字字符。


Answer 6:

试试这个正则表达式:

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

这意味着没有空间,然后,任选地,一个空格,接着任何一个或多个字符。



Answer 7:

只要使用\s* ,以避免两个词在正则表达式中一个或多个空格。

例如, "Mozilla/ 4.75""Mozilla/4.75"既可以通过以下的正则表达式匹配:

[A-Z][a-z]*/\s*[0-9]\.[0-9]{1,2}

添加\s*两个词之间的零,一个或多个空格匹配。



文章来源: Regular expression that allows spaces in a string, but not only blank spaces