У меня есть строка:
var string = "aaaaaa<br />† bbbb<br />‡ cccc"
И я хотел бы разделить эту строку разделителем, <br />
за которым следует специальный символ.
Для этого я использую это:
string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);
Я получаю то, что мне нужно, за исключением того, что теряю разделитель. Вот пример: http://jsfiddle.net/JwrZ6/1/
Как сохранить разделитель?
javascript
regex
Милош
источник
источник
var delim = "<br/>";
?Ответы:
Используйте (положительный) прогноз вперед, чтобы регулярное выражение утверждало, что специальный символ существует, но фактически не соответствует ему:
Посмотрите это в действии:
источник
0
в конец каждой строкиУ меня была похожая, но немного другая проблема. В любом случае, вот примеры трех разных сценариев, где хранить разделитель.
Предупреждение: четвертый будет работать только для разделения отдельных символов. ConnorsFan представляет альтернативу :
источник
g
конец.match
нежадного решения для этих примеров:"11、22、33".match(/.*?、|.+$/g)
->["11、", "22、", "33"]
./g
Модификатор Note имеет решающее значение для матча.Если вы заключите разделитель в скобки, он будет частью возвращаемого массива.
В зависимости от того, какую часть вы хотите сохранить, измените, какой подгруппе вы соответствуете
Вы можете улучшить выражение, игнорируя регистр букв string.split (/ () & #? [A-z0-9] +; / gi);
И вы можете сопоставить предопределенные группы, например:
\d
равные[0-9]
и\w
равные[a-zA-Z0-9_]
. Это означает, что ваше выражение лица может выглядеть так.На JavaScriptKit есть хороший справочник по регулярным выражениям .
источник
ответил на него здесь также JavaScript Split Regular Expression сохраняет разделитель
используйте шаблон просмотра вперед (? = pattern) в примере регулярного выражения
это даст вам следующий результат.
Также может быть разделен напрямую
дает тот же результат
источник
Я внес изменения в ответ jichi и поместил его в функцию, которая также поддерживает несколько букв.
Ответы jichi 3-й метод не будет работать в этой функции, поэтому я взял 4-й метод и удалил пустые места, чтобы получить тот же результат.
edit: второй метод, который исключает массив для разделения char1 или char2
использование:
источник
Функция расширения разделяет строку на подстроку или регулярное выражение, и разделитель ставится в соответствии со вторым параметром впереди или позади.
Тест:
источник
Я использовал это:
За исключением того, что вам не стоит связываться
String.prototype
, так что вот версия функции:Итак, вы могли:
И вы получите:
источник