2015-10-26 1 views
0

Моя стартовая строкаJavascript - инвертирование регулярные выражения

alpha < beta < gamma < delta < epsi 

Я хочу, чтобы захватить одного токенов альфа, бета, ...

В одном таком выражении, может быть также possibily для операторов называть «lt», «gt», и я применил это регулярное выражение до сих пор.

/[^(\<\=?|\>\=?|==\)|^(eq|lt|gt)]/g 

Это выражение не обнаруживает 'э', '', Lt '' как GT ограниченных слова, а просто 'е', 'Q', 'L', 'T', 'G'. Что мне не хватает?

+1

Символьные классы не являются группами, они соответствуют одному символу. –

+0

Вы можете управлять этой конкретной строкой с помощью '' alpha halfzebra

+0

Пожалуйста, разместите весь соответствующий код. –

ответ

3

Просто разделите границы, о которых вы упомянули, и обратите внимание, что используйте классы символов только для поочередного вращения каждого символа. Если вы хотите применить или на группу символов, то вы должны пойти с захватом группы (....) или без захвата группы (?:...)

var s = 'alpha < beta < gamma < delta < epsi' 
 
alert(s.split(/\s*(?:\b(?:eq|lt|gt)\b|[<>]=?|==)\s*/))

+0

Хорошо! Я не могу использовать команду split таким образом, потому что мне нужно одно и то же регулярное выражение для разных потребностей. Но я объединил ваше решение с мином, и я получил /[^ (\ <\=?|\> \ =? | == \)] |^[\ b (?: Eq | lt | gt) \ b]/g который работает мелкий по желанию. Спасибо ! –

+0

@ SandroRosa: Нет, у вас есть это неправильно. '\ B' в' [\ b (?: Eq | lt | gt) \ b] 'означает символ обратного пространства. В предположении он находится за пределами символьного класса, границы слова. Ну, вы, регулярное выражение, ошибаетесь. Прочитайте мой комментарий, проверьте [regular-expressions.info] (http://www.regular-expressions.info/brackets.html). –

+0

Вы правы: я новичок с регулярными выражениями. Я буду использовать split cmd. Ваш фрагмент все еще отлично работает! –

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

  • Нет связанных вопросов^_^