Ну вероятно автор вопроса догадается если потребуется добавить условия word boundary, если они действительно требуются. На практике же применение word boundary встречается довольно редко, вот я и подумал что автор возможно усложнил задачу. В задаче ведь не сказано что нам надо именно отделить слово system от всего остального.
romy4: RoverWhite :
var test = alertParams['type'].search(/system/) > -1; // test == true;
var test = alertParams['type'].search(/system/) == 'system'; // test == false;
var test = alertParams['type'].match(/\bsystem\b/) == 'system'; // test == true;
- свою задача решил, благодарю!
RoverWhite: romy4 : погуглил, что значит 'word boundary', инфы на русском почти нет, почитал на забугорном, вроде-бы (если я правильно понял), это (/\...\b/) слеш и b? Что-бы ограничить область поиска?
И да, мне действительно нужно было найти именно 1 слово целиком...
Mike Ro: Что такое ворд баундари может зависеть от конкретной реализации движка регулярных выражений. Но традиционно это любой символ не входящий в состав символов составляющих слово.
Слово же состоит из символов a-zA-Z0-9 и нижнее подчеркивание, + к этому надо добавить все буквы национальных алфавитов из различных языков.
т.е. выражение \b будет эквивалентно выражению [^0-9a-zA-Z_] для случая только английских букв.
RoverWhite:
А можете написать пример, для моего общего понимания в моей ситуации, когда нужно написать регулярку по требованию 'word boundary', когда необходимо найти лишь 1 слово 'system' целиком..?
Допустим, было: match(/\bsystem\b/)
Стало: ... ?
Давайте сравним что будет с word boundary и без него
с word boundary /\bsystem\b/
system - сработало
system1 - не сработало
systema - не сработало
system-a - сработало
asystem - не сработало
a system - сработало
и без него /system/
system - сработало
system1 - сработало
systema - сработало
system-a - сработало
asystem - сработало
a system - сработало
А как Вам лучше "с или без" выбирайте от того что хотите получить и какие входные данные ожидаете
Mike Ro: type juggling очень опасная штука.
alertParams['type'].match(/\bsystem\b/) не может не возвращать массив, потому что по документации оно возвращает массив. прочитайте внимательней
а сравнение массива со строкой ["system"] == "system" здесь работает, а там не работет.
сейчас у вас ["system"] а будет ["system","1234"] и уже всё
romy4: понял, спасибо, сейчас буду изучать!
А как на Ваш взгляд правильнее написать код, что-бы получить на выходе true или false при поиске в массиве слова 'system'?