Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于检查重复空格字符的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 用于检查重复空格字符的正则表达式

Javascript 用于检查重复空格字符的正则表达式,javascript,regex,Javascript,Regex,我需要编写正则表达式来验证文本条目。文本必须介于5到16个字符之间(a-Z加连字符、下划线和空格)。这很好,但它还必须检查是否没有任何连续的空格 e、 g 您可以使用以下内容: /^(?!.* )[-a-z_ ]{5,16}\z/i 您可以使用以下内容: /^(?!.* )[-a-z_ ]{5,16}\z/i 在Java中,我会选择 " |[^\\p{L}_ -]" (“不是正则表达式的一部分)。 如果字符串与此正则表达式匹配,则它将失败。 我会在if语句中单独检查大小(这样更快)

我需要编写正则表达式来验证文本条目。文本必须介于5到16个字符之间(a-Z加连字符、下划线和空格)。这很好,但它还必须检查是否没有任何连续的空格

e、 g


您可以使用以下内容:

/^(?!.*  )[-a-z_ ]{5,16}\z/i

您可以使用以下内容:

/^(?!.*  )[-a-z_ ]{5,16}\z/i

在Java中,我会选择

"  |[^\\p{L}_ -]"
不是正则表达式的一部分)。 如果字符串与此正则表达式匹配,则它将失败。 我会在if语句中单独检查大小(这样更快)

如果要在不使用Unicode属性的某些语言中执行此操作,请执行以下操作:

\s\s|[^A-Za-z_ -]

在Java中,我会选择

"  |[^\\p{L}_ -]"
不是正则表达式的一部分)。 如果字符串与此正则表达式匹配,则它将失败。 我会在if语句中单独检查大小(这样更快)

如果要在不使用Unicode属性的某些语言中执行此操作,请执行以下操作:

\s\s|[^A-Za-z_ -]
正则表达式:

匹配这些

hello
hello there
hi there
he-llo
he_las test
而不是这些

hello  there
hello     there
正则表达式:

匹配这些

hello
hello there
hi there
he-llo
he_las test
而不是这些

hello  there
hello     there


谢谢,但当我测试它时,这并不能验证任何示例。我还测试了它在那里,它也失败了。有什么想法吗?@TheFlowerGuy,在没有分隔符和标志的情况下试试:
^(?。*)[-a-z{5,16}\z
^(?。*)[-a-z{5,16}$
你在用Java吗?这就是RegexPlanet使用的。请用您正在使用的语言/味道来标记问题。@TheFlowerGuy,它在该站点对我来说很好用。正如巴特所说,正则表达式是分隔符中的内容:
^(?!*)[-a-z!]{5,16}\z
抱歉,我以为我也尝试过没有分隔符的正则表达式,但显然没有。非常好用。谢谢,但当我测试它时,这并不能验证任何示例。我还测试了它在那里,它也失败了。有什么想法吗?@TheFlowerGuy,在没有分隔符和标志的情况下试试:
^(?。*)[-a-z{5,16}\z
^(?。*)[-a-z{5,16}$
你在用Java吗?这就是RegexPlanet使用的。请用您正在使用的语言/味道来标记问题。@TheFlowerGuy,它在该站点对我来说很好用。正如巴特所说,正则表达式是分隔符中的内容:
^(?!*)[-a-z!]{5,16}\z
抱歉,我以为我也尝试过没有分隔符的正则表达式,但显然没有。很好用。连续连字符和连续下划线呢?两种或两种以上的运行,比如
hello-\u那里
?字符串开头或结尾处的空格、连字符或下划线如何?@Alan-字符串中任何位置都只有连续空格,连续连字符和连续下划线如何?两种或两种以上的运行,比如
hello-\u那里
?字符串开头或结尾的空格、连字符或下划线如何?@Alan-字符串中任何位置的连续空格如果像我一样使用块格式,则保留空白。另外,您应该提到,这个正则表达式需要与
find()
方法一起应用,而不是
matches()
。谢谢您的提示。需要注意的是,此解决方案比上述解决方案快得多。此解决方案将检查最佳情况下的一个字符(起始字符不正确或两个空格),以及最坏情况下的所有字符(正确字符串)。具有负前瞻(?。*)(上面的一个)的解决方案将始终检查所有字符(最佳情况-结尾两个空格),并将检查所有字符两次(最坏情况-正确的字符串或开头两个空格)。如果您像我一样使用块格式,则保留空白。另外,您应该提到,这个正则表达式需要与
find()
方法一起应用,而不是
matches()
。谢谢您的提示。需要注意的是,此解决方案比上述解决方案快得多。此解决方案将检查最佳情况下的一个字符(起始字符不正确或两个空格),以及最坏情况下的所有字符(正确字符串)。具有负前瞻性(?。*)(上面的一个)的解决方案将始终检查所有字符(最佳情况-结尾两个空格),并将检查所有字符两次(最坏情况-正确的字符串或开头两个空格)。无法匹配
您好
;不正确地匹配
123 456
;允许制表符、换行符和其他空白字符;并且不验证长度。此外,不应将空格设置为可选,而应将其与以下部分分组,并将该组设置为可选:
^(?=.{5,16}$)[A-Za-z_-]+(?:[A-Za-z_-]+)*$
未能匹配
您好
;不正确地匹配
123 456
;允许制表符、换行符和其他空白字符;并且不验证长度。此外,不应将空格设置为可选,而应将其与以下部分分组,并将该组设置为可选:
^(?=.{5,16}$)[A-Za-z_-]+(?:[A-Za-z_-]+)*$