2012-06-19 2 views
2

Это мой код:Javascript RegExp граница слова вопрос

var boo = new RegExp("\\Bis\\B","gi"); 
var result = boo.exec("this AisA stackoverflow"); 
document.write(result);​ 

Результат: «есть», но я хочу, чтобы функция Exec вернуть весь матч т.е. AISA с использованием не-граница слова \ B. Я знаю, что могу использовать шаблон, например. + Is. +, Чтобы вернуть AisA, но Мне интересно, как сделать то же самое с границей, отличной от слова.

+0

смотреть в будущее Я думаю ... – gdoron

+1

Не используйте 'новый RegExp' со статическими строками; JavaScript имеет более быстрые, лучшие и менее подверженные ошибкам литералы. Например, ваш может быть написан как «var boo =/\ Bis \ B/gi;». – Ryan

ответ

3

Попробуйте это:

/.\Bis\B./ 

Это будет проверять не-границы, а также принять этот символ с ..

+0

Это также соответствует «cisd» из «abcisdefg». В зависимости от того, что его приложение,/\ w * является \ w * /, может быть более уместным. – Wug

0

Возможно, это то, что вам нужно?

\S*\Bis\B\S* 

Поскольку граница не соответствует символам, а только проверяет условие, вы должны использовать что-то еще, чтобы получить символы.

0

Границы слова - это так называемое совпадение нулевой ширины, что означает, что они соответствуют условию, а не символу. Например, в регулярном выражении «\ bw», «\ b» проверяется, что есть пробел либо предшествующий, либо следующий за его местоположением в выражении. Он ничего не фиксирует.

Если вы хотите захватить символ слова, попробуйте использовать \ w.

См: http://www.regexguru.com/2008/04/watch-out-for-zero-length-matches/

0

Чтобы сопоставить слово, содержащее 'является':

/\b\w*is\w*/gi 

Последние \ б не нужно, потому что это часть Лос-Анджелеса (\ ш *).

Смежные вопросы