Я хотел бы подтвердить значение, которое должно иметь только цифру и длина должна быть 11 и не должен начинаться с 129.Regex для проверки чисел с определенной длиной и начали
Возможен ли это, как я не очень эффективно обычные выражения?
Я хотел бы подтвердить значение, которое должно иметь только цифру и длина должна быть 11 и не должен начинаться с 129.Regex для проверки чисел с определенной длиной и начали
Возможен ли это, как я не очень эффективно обычные выражения?
Использовать негативный взгляд. Регулярное выражение должно быть ^(?!129)\d{11}$
Поверните это в шаблон Java; избегайте обратной косой черты.
^(?! 129) \\ d {11} $ это выражение отлично работает в java, но не поддерживается в xsd 1.0 – user2369634
Если правила регулярного выражения xsd не поддерживают '\ d', используйте' [0-9] 'вместо этого. У вас есть два 'xsd: pattern' в 'xsd; restriction'? –
^(?! 129) [0-9] {11} также не поддерживается в xsd. Если мы используем 2 шаблона xsd в одном ограничении, тогда он будет рассматриваться как «pattern1 OR pattern2», но не «pattern1 AND pattern2» – user2369634
Вы можете использовать
String num_regex = "^(?!129)\\b[0-9]{11}\\b";
String testString= "12345678910";
Boolean b = testString.matches(num_regex);
System.out.println("String: " + testString + " :Valid = " + b);
testString= "12945678910";
b = testString.matches(num_regex);
System.out.println("String: " + testString + " :Valid = " + b);
ВЫВОД:
String: 12345678910 :Valid = true
String: 12945678910 :Valid = false
'\ b' и'^'являются избыточными, когда вы используете' String.matches' – nhahtdh
Спасибо. Он работает правильно. Но могу ли я использовать условие AND для комбинирования 2 разных регулярных выражений в одном шаблоне? – user2369634
Regex отлично работает в Java-коде, но в xsd 1.0 это регулярное выражение не поддерживается. – user2369634
для XSD1.0, только ниже регулярное выражение работает отлично: [02-9] [0-9] {10} | 1 [013-9] [0-9] {9} | 12 [0-8] [0-9] {8} – user2369634
^(?! 129) \ d {11} $ не будет работать в xsd 1.0 – user2369634