私はregexesを初めて使用しており、フォームを検証しています。私はString.prototype.match
を使用して、誤った配列応答にフィルターをかけたいと思います。入力は、この形式と一致する必要があり:各識別子は常にfoo-
で開始し、その後7桁を有するjavascriptで数字以外の数字を一致させる
"foo-1234567"
。複数の識別子がある場合、入力は次の形式になります。
"foo-1234567\nfoo-7654321\nfoo-1324536"`
識別子は改行で区切られます。
foo-
の各識別子を入力してから、1文字以上の非数字文字を含む7文字を入力します。入力が、この場合には:["foo-1234A67", "foo-123$5^7"]
:
"foo-1234567\nfoo-1234A67\nfoo-123$5^7"
私はこのようなmatch
から配列をしたいです。
正規表現は、私が試してみました:
/^foo-\D+$/gmi //nada
/^foo-(\D){1,7}$/gmi //not even close
/^foo-\d*\D+\d*$/gmi //good but matches > or < 7 characters
/^foo-(?=^foo-\d*\D+\d*$)(?=PR-.{7})/gmi //empty string or null
いつものように、これはコードのゴルフなので、最短コードが勝ちます。
正規表現が間違っていると、正規表現はそれほど単純ではありません。*「私が望む私の持っている各識別子を与えることと一致foo-として、その後7文字1以上の非"*。 –
@SpencerWieczorek - 私の編集はその要件をカバーし、 '.split()。filter()'がないと思うが、元の答えを残して、*すべての*無効な値が出力に含まれるようにする特定の形式に一致する無効な値だけではありません。 – nnnnnn
すごくいいですね。強制的に7桁に一致しないと、OPの要件を満たします。残念ながら私は少し遅れていることが分かりました:P –