2015-10-08 1 views
1

Первая буква должна быть альфа/числовая и косая черта, допускаются любые специальные символы, кроме & и |Ошибка сценария остановки повторного вызова для длинных значений

new RegExp('^[\/A-Za-z0-9](([^\|\&]?[a-zA-Z0-9]?)*)$'); 

Выше регулярное выражение работы для правильного формата и минимальных символов например (/ABCD% *)

Если я дать длинный символ например (/abcdabcdabcdabcdabcdabcdabcd &), остановить ошибка сценария происходит в светлячок. Просьба предложить некоторые более регулярное выражение для исправления его

Demo

+0

Было бы лучше, если бы вы сообщили нам, какую строку вы пытаетесь найти. –

+0

@SalmanA Просто посмотрите на скрипку или на стол. Он пытается совместить с '/ abcdabcdabcdabcdabcdabcdabcd &' – Magus

ответ

4

Ваш вопрос захваченной группы (скобки). Избавьтесь от них, и все в порядке. Просто сделайте это как можно проще!

Первая буква должна быть альфа/числовой [или] слеш

^[/A-Za-z0-9] 

каждые специальные символы допускаются, за исключением & и |

[^|&]+ 

(Вам не нужно бежать | или &.)

Собираем вместе:

^[\/A-Za-z0-9][^|&]+$ 

Попробуйте here.

+0

Помимо групп захвата, существует также потенциальная катастрофическая проблема с возвратом исходного регулярного выражения. –

+0

Не нужно избегать '/' либо (внутри первой скобки). – Amit

+0

О да! Я всегда думал, что ты сделал ... :) – benshepherd

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