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/));
Другие вопросы по тегам