1

何使用java脚本正则表达式在字符串中最多允许三个空格

我尝试了以下

<script type="text/javascript">
var mainStr = "Hello World";
var pattern= /^(?=[^ ]* ?[^ ]*(?: [^ ]*)?$)(?=[^-]*-?[^-]*$)(?=[^']*'?[^']*$)[a-zA-Z '-]*$/; 
if(pattern.test(mainStr)){
 alert("matched");
}else{
 alert("not matched");

}
</script>
4

2 回答 2

1

以下正则表达式匹配 0-3 个空白字符。

\s{0,3}

以下正则表达式匹配最多包含 3 个空白字符的字符串。

^[^\s]+\s?[^\s]*\s?[^\s]*\s?[^\s]*$

例子:

"ab" - (match)
"a b" - (match)
"a b c" - (match)
"a b c d" - (match)
"a b c d e" - (doesn't match)
"a b c d e f" - (doesn't match)

(仍在等待提问者的示例!)

于 2013-11-06T22:28:02.693 回答
1

你需要一个正则表达式吗

如果您想要做的唯一目的是在字符串中的任何位置最多允许 3 个空格 - 为什么不简单地比较字符串在删除所有空格(或\s相关的空白字符)之前和之后的长度?如果差异超过 3 个字符 - 它包含超过 3 个空格。

例如

var mainStr = "Hello Wor l d";

if(mainStr.replace(/ /g, '').length > (mainStr.length - 3)) {
    alert("matched");
}else{
    alert("not matched");
}

如果您的要求更具体 - 您需要澄清(编辑问题),否则不要在不需要时使用正则表达式。

于 2013-11-06T22:36:24.180 回答