Можно ли улучшить это регулярное выражение замены подстроки? - PullRequest
2 голосов
/ 07 мая 2010

Мне нужно заменить подстроку из некоторой строки. Я уже создал исправленный код для этого. Но я не уверен, что это лучший способ. Пожалуйста, смотрите код ниже:

var str = 'test ruby,ruby on rails,ruby,'
var substr = 'ruby';
var reg = new RegExp(',' + substr + ',|^' + substr + ',', 'gi');
str.replace(reg, ','); //returns "test ruby,ruby on rails,"

Ответы [ 4 ]

2 голосов
/ 07 мая 2010

Вы можете немного его укоротить:

var reg = new RegExp('(^|,)' + substr + ',', 'gi');
1 голос
/ 07 мая 2010

Если ваша подстрока не сгенерирована программно или не основана на вводе пользователем, на мой взгляд, ее легче читать, если вы определяете регулярное выражение в javascript с помощью операторов / /.

Чтобы вы могли переопределить reg как:

reg = /,ruby,|^ruby,/gi;
1 голос
/ 07 мая 2010

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

var reg = new RegExp("(^|,)" + substr + "(,|$)", "gi");
0 голосов
/ 07 мая 2010

Чтобы уточнить, о чем упоминает Шон, если вы на самом деле программно генерируете свои строки, вы можете проверить этот вопрос SO , который имеет функцию для экранирования строк регулярного выражения для javascript. Отличная вещь! Удачи:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...