Соответствие элементов JavaScript в RegEx - PullRequest
1 голос
/ 18 сентября 2008

Я пытаюсь сопоставить элементы с именем 'container1$container2$chkChecked', используя регулярное выражение '.+\$chkChecked', но я не получаю совпадений, ожидаемых, когда имя элемента соответствует описанному. Что я делаю не так?

Ответы [ 5 ]

3 голосов
/ 18 сентября 2008

Я полагаю, что, используя кавычки, вы сделали что-то вроде

re = new RegExp('.+\$chkChecked');

, который не будет работать, потому что js использует \ in в своей интерпретации строк как escape, так что он никогда не превращается в интерпретатор regex

вместо этого вы хотите

re = new RegExp('.+\\$chkChecked');
3 голосов
/ 18 сентября 2008

1001 * попробовать *

string.match( /[$]chkChecked$/ ) 

альтернативно, вы можете попробовать

string.match( /[^a-zA-Z0-9]chkChecked/ ) 

(Кроме того, убедитесь, что вы используете // вокруг своего регулярного выражения, в противном случае вы можете использовать строковые литералы. Это не очевидно без большого фрагмента кода)

2 голосов
/ 18 сентября 2008

Существует два уровня экранирования: один при первом разборе кода (например, если вы хотите включить ' в строку), а второй - в механизм регулярных выражений. Таким образом, вам нужно два \s перед $, чтобы механизм регулярных выражений не рассматривал его как специальный символ.

0 голосов
/ 18 сентября 2008

Стивен Нобл:

, который не будет работать, потому что js использует \ in в своей интерпретации строк как escape, так что он никогда не превращается в интерпретатор regex

Я намеревался использовать \ как escape, потому что я действительно ищу $ в имени элемента.

0 голосов
/ 18 сентября 2008

Похоже, должно работать.

Есть хороший Javascript Regex Tester , который также говорит, что он соответствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...