2016-02-29 2 views
2

назад 'Я использую регулярное выражениеJavascript регулярного выражения

^\d{1,2}\.\d{1,3}(\([a-z]\))?(\(\d\))?$ 

в соответствии со значениями, как (а) (6), (б) (4) Это прекрасно работает. Но мне нужно просто проверить (a) как истину, но просто (3) следует вернуть false. Я хотел что-то вроде

^\d{1,2}\.\d{1,3}(\([a-z]\))?(?(-1)\(\d\))?$ 

Я где-то читал, что яваскрипт поддержки оленьей кожи 'назад. Мне нужно сопоставить шаблон следующим образом.

  • 23,456 -> истинная
  • 23,346 (е) -> истинно
  • 23,378 (5) -> ложно
  • 23,214 (б) (7) -> истинная

Благодаря за помощь заранее.

+0

Что вы читаете было правильно :) – Pointy

+0

Что вы действительно хотите? – Adam

+0

Я думаю, что OP означает, что 1-я группа должна существовать, 2-я группа не является обязательной. – Quinn

ответ

1

Я думаю, что что-то подобное может работать для вас :

^\d{1,2}[.]\d{1,3}([(][a-z][)]([(][0-9][)])?)?$ 

Отметьте, что я предпочитаю синтаксис [.] по умолчанию. \..

LegendaOnline Demo

^\d{1,2}[.]\d{1,3} # this may be also [\d.] if you don't care about structure 
(     # START GROUP 1 
    [(][a-z][)]  # A lowercase letter inside round bracket 
    (    # START GROUP 2 
    [(]\d[)]  # A digit inside round bracket 
)?    # END GROUP 2: make it optional 
)?     # END GROUP 1: make it optional 
$     # End of the string 

Демо

// Add /i at bottom to make the regex it case insensitive 
 
var re = /^\d{1,2}[.]\d{1,3}([(][a-z][)]([(][0-9][)])?)?$/; 
 

 
var tests = ['23.456','23.346(f)','23.378(5)','23.214(b)(7)'].reverse(); 
 
var m; 
 

 
while(t = tests.pop()) { 
 
    document.write('"' + t + '"<br/>'); 
 
    document.write('Valid? ' + ((t.match(re)) ? '<font color="green">YES</font>' : '<font color="red">NO</font>') + '<br/><br/>'); 
 
}

+0

Awesome. Это было действительно полезно. огромное спасибо – user1879531

1

Вам нужно это регулярное выражение:

\([a-z]\)(\(\d\))?$ 
  • (a)(3) - истинный
  • (a) - истинный
  • (3) - ложные
+0

Спасибо. Но перед этим матчем есть что-то еще. что является обязательным. Но \ ([a-z] \) и \ (\ d \) являются необязательными – user1879531

+0

, можете ли вы привести несколько примеров? – Adam

+0

Я только что обновил вопрос. 23.456 -> true 23.346 (f) -> true 23.378 (5) -> false 23.214 (b) (7) -> true – user1879531