Javascript 用于检查重复空格字符的正则表达式
我需要编写正则表达式来验证文本条目。文本必须介于5到16个字符之间(a-Z加连字符、下划线和空格)。这很好,但它还必须检查是否没有任何连续的空格 e、 gJavascript 用于检查重复空格字符的正则表达式,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语句中单独检查大小(这样更快)
您可以使用以下内容:
/^(?!.* )[-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_-]+)*$