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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


пытаться
string.match( /[$]chkChecked$/ )
в качестве альтернативы вы можете попробовать
string.match( /[^a-zA-Z0-9]chkChecked/ )
(Кроме того, убедитесь, что вы используете // вокруг своего регулярного выражения, иначе вы можете сопоставить с использованием строковых литералов. Это не очевидно без более крупного фрагмента кода)
Похоже, должно работать.
Есть хороший Тестер Javascript Regex, который также говорит, что он совпадает.
я предполагаю, используя цитаты, вы сделали что-то вроде
re = new RegExp('.+$chkChecked');
который не будет работать, потому что js использует \ в своей строковой интерпретации как escape, поэтому он никогда не попадает в интерпретатор регулярных выражений
вместо этого ты хочешь
re = new RegExp('.+\$chkChecked');
Steven Noble:
which won't work because js takes advantage of the \ in its string interpretation as an escape so it never makes it into the regex interpreter
Я намеревался использовать \ как побег, потому что я действительно ищу $ в имени элемента.
Существует два уровня экранирования: один, когда ваш код сначала анализируется (например, если вы хотите включить ' внутри строки), и второй в механизме регулярных выражений. Итак, вам нужно два \s перед $, чтобы механизм регулярного выражения не обрабатывал его как специальный символ.
Итак, чего вы ждете и что получаете?