1

Ho は、Java スクリプトの正規表現を使用して、文字列に最大 3 つの空白を許可します

私は以下で試しました

<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

正規表現がまったく必要ですか

やりたいことの唯一の目的が、文字列内の任意の場所に最大 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 に答える
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 に答える