0000またはスペースのみを許可し、両方を許可しない正規表現を取得するにはどうすればよいですか?
例:
- 0000000000000000000-> OK;
- スペースのみ->OK;
- 0000000000000->問題あり;
- afads0000000fd->OKではありません。
0000またはスペースのみを許可し、両方を許可しない正規表現を取得するにはどうすればよいですか?
例:
^(?:0+| +)$
説明:
^ # Start of string
(?: # Either match (but don't capture)...
0+ # one or more zeroes
| # or
[ ]+ # one or more spaces
) # End of non-capturing group (used to contain the alternation)
$ # End of string
編集:この回答は、先頭および/または末尾のスペースを許可する場合にのみ適用されます。失敗の原因となるスペースの問題で与えられた唯一の例は、スペースが0
シーケンスを区切る場所です。
そうでない場合は、 @Tim Pietzcker's answer のように、正規表現が必要になります。
スペースのみの文字列は に変換され、先頭/末尾のスペースは無視されるため、正規表現の代わりにtoNumber変換を行うことができます。0
ここでは、単項演算子を使用+
してtoNumber変換を行います。
if (+str === 0) {
// pass
}
1 つの注意点は、空の文字列も に変換されること0
です。それが望ましくない場合は、最初に.length
.
if (str.length && +str === 0) {
// pass
}
"0000000000000000000" // pass
" 000 " // pass
" " // pass
"000000000 0000" // fail
"afads0000 00 0fd" // fail
"" // pass first solution, fail second solution
これはうまくいくはずです:(0+)|( +)
ですね。