2014-02-14 2 views
1

Учитывая эти строки:RegExp: соответствует строке, разделенных точкой с запятой в начале или между точкой с запятой или в конце строки

1;2;3 
2;1;3 
2;3;1 

Мне нужно, чтобы соответствовать/найти 1 в нем (для простоты , 1 может быть любой строкой).

Придумал этот шаблон в качестве частичного решения, которое в данный момент подходит моим потребностям (потому что он возвращает истину на regexp.test()):

(?:^|;)(1)(?=;|$) 

Он соответствует всем вхождений 1, но:

второй и третий результат имеет точку с запятой прикрепленную перед ним, как это:

;1 

Как я мог переписать шаблон, чтобы избавиться от с Точка с запятой?

Заранее благодарен!

+1

Нет, в javascript нет никаких искажений. Захват и удаление ('match [1]'). – georg

ответ

1

Нельзя - JavaScript не поддерживает lookbehind assertions, который вам понадобится для этого.

Но вы можете просто получить доступ к match[1], чтобы получить содержимое первого capturing group вашего регенного объекта match.

+0

Я думаю, что я смутился объяснением не захватывающих круглых скобок на [MozillaDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-non-capturing- скобки), думал, что (?:;) не будет совпадать с точкой с запятой. : | – user1398498

1

Просто используйте regexp.match()[1], чтобы получить то, что вы хотите.

0

Попробуйте это регулярное выражение:

^([^1]*)1([^1]*)*$ 

Если я использую свои дела, он работает !! Этот адрес может помочь вам: http://www.metriplica.com/es/recursos/expresiones-regulares

+0

Не работает. Попробуйте ввести «0» в «Texto de reemplazo:» и нажмите кнопку «REEMPLAZAR». Вся строка будет заменена. Не только 1 в нем. – user1398498

+0

Expresión:^([^ 1] *) 1 ([^ 1] *) * $ Cadena a probar: 2; 3; 1; Texto de reemplazo: $ 10 $ 2 (попробуйте тоже $ 1AAAAA $ 2) Нажмите «Reemplazar» – Andynedine

+0

Извините, но не то, что я искал. Спасибо, в любом случае. – user1398498

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