JavaScript Regex Создание необработанного SyntaxError: неожиданный токен ILLEGAL
У меня есть это в моем JavaScript,
alert(words.match(\b.(\w*)\b));
, где words
строка, определенная ранее. Но, регулярное выражение (\b.(\w*)\b
) выдает ошибку консоли Uncaught SyntaxError: Unexpected token ILLEGAL
, Я думаю, что это обратная косая черта, но независимо от того, что я делаю, у меня все еще есть проблема. Я тщательно исследовал эту проблему на Stackru и Google, но ни один из результатов не работает или не соответствует моей ситуации.
Вот регулярное выражение, которое я использую: http://regexr.com/?36u4v. Любая задержка будет принята с благодарностью.
2 ответа
Это сводится к "Это \b.(\w*)\b
RegExp? "Ну, вроде, но вы не сказали об этом интерпретатору. Это не литерал RegExp в JavaScript. Вам нужно либо передать его в виде строки в RegExp
конструктор, или используйте буквенное обозначение, которое начинается и заканчивается /
/\b.(\w*)\b/
Что касается вашей ошибки, переводчик достигает \
во-первых и не знает, что это значит, поэтому он говорит вам, что токен (\
) было неожиданным, поэтому "незаконно" там, где вы его использовали.
Для нескольких матчей вам нужно установить g
флаг lobal, например, чтобы найти "foo" несколько раз
/foo/g
хорошо ли это регулярное выражение для выбора всех слов, кроме пробелов и знаков препинания (кроме подчеркивания и дефиса)
\w
сокращение для класса [A-Za-z0-9_]
Таким образом, вы не соответствуете дефисы в данный момент. Ваш .
также будет соответствовать большинству символов, включая пробелы и знаки препинания. Вы можете поменять местами *
(ноль или более) для +
(один или несколько), поэтому вам не нужно .
, Поэтому следующее может быть более подходящим для ваших нужд
/\b([A-Za-z0-9_-]+)\b/g
Вы забыли поместить свой регулярное выражение в косую черту:
alert(words.match(/\b.(\w*)\b/));