0

文字列のどこにも 9 桁の数字を含めないでください。8 桁または 10 桁、または 9 桁以外の任意の数字を含めることができます。

有効 - 12345678、1234567891、12345678
無効 - 123456789、123456789

Regex - "^(?!(^|.*\\D)\\d{9}(\\D|$)).*|^(?!(^|.*\\D)\\d{16}(\\D|$)).*"; 

10 桁の文字は使用できません

4

3 に答える 3

2

この正規表現

/^(\D*|\d{1,8}(\D|$)|\d{10,})*$/

または文字列で(を2倍にする\

/^(\\D*|\\d{1,8}(\\D|$)|\\d{10,})*$/

繰り返されるシーケンスを処理します

于 2013-02-01T02:02:29.507 に答える
2

これを試して:

if (input.matches("^(?!(^|.*\\D)\\d{9}(\\D|$)).*")) {
    // the input does not contain a 9-digit number
}
于 2013-02-01T01:24:08.913 に答える
1

これはうまくいくようです:

bsh % pp = java.util.regex.Pattern.compile(
  "(^|\\D)+(\\d{10,2147483647}|\\d{0,8})(\\D+|$)((\\d{10,2147483647}|\\d{0,8})(\\D+|$))*");

bsh % mm = pp.matcher(".1234567890 1234567890.").matches();
<true>
bsh % mm = pp.matcher(".1234567890 123456789.").matches();
<false>
bsh % mm = pp.matcher(".123456789 123456789.").matches();
<false>
bsh % mm = pp.matcher(".123456789 12345678.").matches();
<false>
bsh % mm = pp.matcher(".12345678 12345678.").matches();
<true>
bsh % mm = pp.matcher("123456789 12345678.").matches();
<false>
bsh % mm = pp.matcher("12345678 12345678.").matches();
<true>
bsh % mm = pp.matcher("12345678 123456789").matches();
<false>
bsh % mm = pp.matcher("12345678 12345678").matches();
<true>

そして、質問からの文字列で:

bsh % mm = pp.matcher("12345678, 1234567891, a 12345678").matches();
<true>
bsh % mm = pp.matcher("123456789, 123456789 a").matches();
<false>
于 2013-02-01T01:51:39.647 に答える