2014-01-09 1 views
0

В регулярном выражении:RegExp для Javascript, который позволяет всем, кроме "и%

var r = new RegExp('^[^%"]*$');

что делает ^ и $ означает ли это означает начало и конец строки или что-то еще

Кроме того. что если я удалить ^ и $ что-то вроде:

var r = new RegExp('[^%"]*'); 

Является ли это правильным регулярным выражением?

+0

Вам не нужно вводить 'новый RegExp'. 'var r =/^ [^%"] * $ /; 'отлично;) –

ответ

2

что означает^и $ означает? Означает ли это начало и конец строки или что-то еще.

Вне класса [] символов ^ соответствует началу строки, а $ соответствует концу строки. Внутри класса символов []^ (при использовании в начале класса) указывает математику любых символов не внутри класс символов.

Кроме того, что если я удалю^и $ что-то вроде:? Вара г = нового РегВыра ('[^% "] *'); Является ли это регулярное выражение

Да, это справедливо, так что он не будет выполнять много, потому что может быть символы по обе стороне от инверсного матча и * матчей 0 или более из определенного класса персонажа.

использовать что-то вроде regex101.com to test your expressions and play around.

0

да '^' и '$' означают конец строки, соответственно. по крайней мере, вне класса символов. в символьном классе^означает нет, поэтому он не будет соответствовать тем отрицательным символам (% и одинарной кавычки в этом случае) , если вы удалите ^ и $, тогда регулярное выражение, вероятно, пройдет, даже если строка имеет% или «в ней , с другими персонажами

Примеры

"\"50\"%".match(/^[^"%]*$/); // equals null 
"\"50\"%".match(/[^"%]*/); //equals [""] 
"\"50\"%".match(/[^"%]*/g); //equals ["", "50", "", "", ""] 

Также в JS это лучшие практики, чтобы создать свой регулярное выражение, используя/некоторые регулярное выражение/г вместо нового Regex («некоторые регулярных выражений»)

+2

Почему лучше всего использовать */some regex/gm *? – Stephan

+0

Я не согласен с частью' gm' flags. 'g' используется только тогда, когда вам нужно сопоставить все вхождения, а' m' будет обрабатывать разрыв строки в качестве индикатора новой строки. –

+0

не нужно заканчивать на gm, это просто флаги для механизма регулярных выражений (g означает global, m означает multiline, i означает нечувствительность к регистру). Я просто использовал их, чтобы показать, как передавать флаги. Когда вы создаете regexp open с 'new RegExp', вам придется беспокоиться об экранировании, поэтому, если вы соответствуете регулярное выражение, которое имеет «и» в нем, вам нужно будет избежать этого. Это и использование/regex/выглядит лучше. вероятно, больше я забываю об этом – raser

0

смысл ^ и $ можно изменить с значением флага m.

  • Если m флаг установлен, ^ и $ будет соответствовать соответственно начало и конец линии.
  • Если m флаг не установлен, ^ и $ будет соответствовать соответственно начало и конец все строки.

Поскольку изображение лучше, чем 1000 слов, здесь регулярные выражения визуально:

^[^%"]*$ 

Regular expression visualization

[^%"]* 

Regular expression visualization

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