正则表达式允许字母数字和空格,但不能连续两个空格

问题描述:

您好,我有一个正则表达式,最多只允许18个字符的数字,字母和空格。正则表达式允许字母数字和空格,但不能连续两个空格

我该如何修改这个来检查字符串是以空格开始还是在一行中有两个空格?

/^[0-9A-Za-z\s]{1,18}$/ 

我在本地JavaScript(而不是jQuery)和PHP中都使用这个正则表达式。

+2

如果你对这个非正则表达式做一个单独的检查,这真的更容易... – CBroe

+0

当你说连续两个空格时,你的意思是字符串中的任何位置? –

+0

请注意'\ s' [不匹配*空格*](http://php.net/manual/en/regexp.reference.escape.php) – fusion3k

可以使用负look-ahead检查,如果字符串以空格开始,或者有2个或更多的连续空间,像:

^(?!.*\s{2,})(?!^)[0-9A-Za-z\s]{1,18}$ 
+0

建议的正则表达式选择'“testerert 12v3k8”'或'“嘿是这样好吗?”它以一个空格开始,并且在一行中共有两个空格,共18个字符? – Redu

+0

不,他们不会被匹配,这是OP想要的,我猜... –

+0

“您可以使用负向预检来检查字符串是以空格开始还是具有2个或更多个连续空格。 “那么为什么不选择”嘿,这是好事“引用..? (“is”和“this”之间有2个空格,只是这个textarea将双空格转换为单个...) – Redu

(?:(?![ ]{2}).)+ 

使用本正则表达式。这可能会解决您的问题。