3

SOで同様の質問を見つけましたが、頭に浮かぶものは何もありません。必要なものは次のとおりです。

6桁以上、これらの文字が許可されています\s\-\(\)\+

だからここに私が持っているものがあります/^[0-9\s\-\(\)\+]{6,}$/

問題は、数字以外を 6 以上の量指定子に数えたくないということです。どうすれば数字だけを「数える」ことができますか? また、許可されている他の文字が隣接して入力されないようにすることもできればよいでしょう。

0898--234 
+43 34  434

正規表現のチート シートを 1 時間読んで見た後、親切な人が私を正しい方向に向けてくれることを願っています!

4

3 に答える 3

1

先読みを使用できます:

/^(?=(\D*\d){6,})[0-9\s()+-]{6,}$/
于 2013-11-19T15:08:20.620 に答える
0
/^[\s()+-]*(\d[\s()+-]*){6,}$/

これは「クラフト」をカウントしません。任意の数の特殊文字の後に 6 回 [数字の後に任意の数の特殊文字が続く] を使用できます。
あなたがしたい場合は最大。数字の間に1つの特殊文字、の?代わりに使用*しますが、最初または最後に複数の特殊文字をあまり気にしないと思いますので、私は

/^[\s()+-]*(\d[\s()+-]?){6,}[\s()+-]*$/

これは、任意の数の特殊文字に一致し、その後に 6 回以上 [数字と最大 1 つの特殊文字が続く] が続き、その後に任意の数の特殊文字が続きます。


別のオプションは、最初に文字列から特殊文字を取り除き、次に 6 桁以上と照合することです。

var rawInput = "    12  (3) -- 4 -5 ++6";
var strippedInput = rawInput.replace(/[\s()+-]*/g, "");
return new RegExp("^\d{6,}$").test(strippedInput);

完全なプログラミング言語を自由に使用できることを忘れないでください。私は、人々が正規表現を使用する必要があると判断し、それ以外にできることをすべて忘れる傾向があることに気付きました。

于 2013-11-19T15:06:43.843 に答える