2016-01-06 2 views
0

Я пытаюсь преобразовать следующее регулярное выражение: «? (»Преобразование PHP регулярное выражение для JavaScript

^(?:\d{12}|\d{9}|(?i:YHZ)?\d{6}|(?i:YHZ)?\d{8})$ 

в Javascript, но сталкиваются с проблемами, для побега или обработки

Я попытался проверки на https://regex101.com/#javascript, но не в состоянии справиться с этим может кто-нибудь, пожалуйста, поделитесь тем, что нужно исправить в вышеупомянутом регулярном выражении, чтобы он мог работать в javascript.

+0

Что делает это регулярное выражение? – gurvinder372

+0

проверяется на следующие случаи: a. \t yhz + 6numeric (не чувствительный к регистру для yhz) b. \t yhz + 8numeric (не чувствительный к регистру для yhz) c. \t 6numeric d. \t 8numeric e. \t 9 числовые f. \t 12 numeric – Swapy

ответ

4

JavaScript не поддерживает частичные нечувствительные к регистру шаблоны, поэтому (?:i недействителен в JS.

Используйте i флаг, чтобы сделать регулярное выражение в-случае-чувствительной

/^(?:\d{12}|\d{9}|(YHZ)?\d{6}|(YHZ)?\d{8})$/i 

Regex 101 Demo


От Комментарии:

it validates for following cases 

a. yhz+6numeric (not case sensitive for the yhz) 
b. yhz+8numeric (not case sensitive for the yhz) 
c. 6numeric 
d. 8numeric 
e. 9numeric 
f. 12numeric 

Регулярное выражение можно переписать в виде

/^((yhz)?[0-9]{6}([0-9]{2})?|([0-9]{6})(([0-9]{2,3})|([0-9]{6}))?)$/i 

Испытание это регулярное выражение на Regex101

input:valid { 
 
    color: green; 
 
} 
 
input:invalid { 
 
    color: red; 
 
}
<input type="text" pattern="((yhz|YHZ)?[0-9]{6}([0-9]{2})?|([0-9]{6})(([0-9]{2,3})|([0-9]{6}))?)" /> 
 

 
<br /> 
 
<br />it validates for following cases 
 

 
<ul> 
 
    <li>yhz + 6numeric</li> 
 
    <li>yhz + 8numeric</li> 
 
    <li>6 numeric</li> 
 
    <li>8 numeric</li> 
 
    <li>9 numeric</li> 
 
    <li>12 numeric</li> 
 
</ul>

Regex Visual

Если вы не хотите какой-либо группы захвата, используйте (?: в начале группы.

/^(?:(?:yhz)?[0-9]{6}(?:[0-9]{2})?|(?:[0-9]{6})(?:(?:[0-9]{2,3})|(?:[0-9]{6}))?)$/i 

Regex101 Demo

Regex Visualization

+0

Я использовал код/​​^ ((yhz)? [0-9] {6} ([0-9] {2})? | ([0-9] {6}) (([0- 9] {2,3}) | ([0-9] {6}))?) $/I, но я должен поместить следующее в DHC, где мне нужно добавить это регулярное выражение в ключ «format_validation_regex»: «/^((YHZ) [0-9] {6} ([0-9] {2}) |? ([0-9] {6}) (([0-9] {2,3}) | ([0-9] {6}))?) $/I ";, но теперь он дает сообщение об ошибке для всего, что я ввожу – Swapy

0

input:valid { 
 
    color: green; 
 
} 
 
input:invalid { 
 
    color: red; 
 
}
<input type="text" pattern="((yhz|YHZ)?[0-9]{6}([0-9]{2})?|([0-9]{6})(([0-9]{2,3})|([0-9]{6}))?)" /> 
 

 
<br /> 
 
<br />it validates for following cases 
 

 
<ul> 
 
    <li>yhz + 6numeric</li> 
 
    <li>yhz + 8numeric</li> 
 
    <li>6 numeric</li> 
 
    <li>8 numeric</li> 
 
    <li>9 numeric</li> 
 
    <li>12 numeric</li> 
 
</ul>

input:valid { 
 
    color: green; 
 
} 
 
input:invalid { 
 
    color: red; 
 
}
<input type="text" pattern="((yhz|YHZ)?[0-9]{6}([0-9]{2})?|([0-9]{6})(([0-9]{2,3})|([0-9]{6}))?)" /> 
 

 
<br /> 
 
<br />it validates for following cases 
 

 
<ul> 
 
    <li>yhz + 6numeric</li> 
 
    <li>yhz + 8numeric</li> 
 
    <li>6 numeric</li> 
 
    <li>8 numeric</li> 
 
    <li>9 numeric</li> 
 
    <li>12 numeric</li> 
 
</ul>

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