正規表現で困っています。
要件は、任意の文字数の無制限の正規表現ですが、12
数字 {数字} のみを許可する必要があります。
助けてください、ありがとう。
なぜこのようなものではありません:
var s = '12345aaaaaaaaaaaaaaaaabc444';
var maxDigits = 12,
len = s.length,
numDigits = 0,
newLen;
if (len > maxDigits) {
newLen = s.replace(/[0-9]/g, '').length;
numDigits = len - newLen;
}
if (numDigits > maxDigits) {
//error
}
この正規表現がうまくいくと思います:
/^(.*?[\d].*?){12}$/
数字の両側にある任意の数の文字に対して貪欲でない一致を行っています。そのサブパターンは 12 回存在する必要があります。
文字列内の 3 桁の一致の例:
/^(([^\d]*\d[^\d]*){3})$/.test('asd1a2a4a') // -> (3 digits) true
/^(([^\d]*\d[^\d]*){3})$/.test('asd1a2a44a') // -> (4digits) false
[0-9]{12}
これを試してください... これで 12 桁が得られます。12と12のみ。
数値ではなく任意の文字を追加する必要があります。ヘルプが必要ですか?