2013-05-10 2 views
-3

Я хотел бы подтвердить значение, которое должно иметь только цифру и длина должна быть 11 и не должен начинаться с 129.Regex для проверки чисел с определенной длиной и начали

Возможен ли это, как я не очень эффективно обычные выражения?

+0

для XSD1.0, только ниже регулярное выражение работает отлично: [02-9] [0-9] {10} | 1 [013-9] [0-9] {9} | 12 [0-8] [0-9] {8} – user2369634

+0

^(?! 129) \ d {11} $ не будет работать в xsd 1.0 – user2369634

ответ

5

Использовать негативный взгляд. Регулярное выражение должно быть ^(?!129)\d{11}$ Поверните это в шаблон Java; избегайте обратной косой черты.

+0

^(?! 129) \\ d {11} $ это выражение отлично работает в java, но не поддерживается в xsd 1.0 – user2369634

+0

Если правила регулярного выражения xsd не поддерживают '\ d', используйте' [0-9] 'вместо этого. У вас есть два 'xsd: pattern' в 'xsd; restriction'? –

+0

^(?! 129) [0-9] {11} также не поддерживается в xsd. Если мы используем 2 шаблона xsd в одном ограничении, тогда он будет рассматриваться как «pattern1 OR pattern2», но не «pattern1 AND pattern2» – user2369634

0

Вы можете использовать

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 
+2

'\ b' и'^'являются избыточными, когда вы используете' String.matches' – nhahtdh

+0

Спасибо. Он работает правильно. Но могу ли я использовать условие AND для комбинирования 2 разных регулярных выражений в одном шаблоне? – user2369634

+0

Regex отлично работает в Java-коде, но в xsd 1.0 это регулярное выражение не поддерживается. – user2369634

Смежные вопросы