Мое регулярное выражение прекрасно работает с одной строкой ввода, но не с двумя или более ... - PullRequest
2 голосов
/ 01 ноября 2011

Я работаю над этим небольшим кодом: http://jsfiddle.net/5kXBk/
Если вы наберете "foo $ 42 bar" в первом div, вы получите правильную окраску текста.Но если вы добавите новую строку и начнете писать, текст останется зеленым ...

Как я могу решить эту проблему?
Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

Вы используете ^ и $ в вашем RegExp.Это приводит к тому, что RegExp соответствует только одной строке: строке, которая полностью соответствует шаблону.

Вместо этого используйте следующее RE при fiddle: http://jsfiddle.net/5kXBk/7/

text = text.replace(/([^$]*)((?\$\d+)*)(.*?)(?=<br|$)/g, "<span class=\"blue\">$1</span><span class=\"red\">$2</span><span class=\"green\">$3</span>");
  1. ([^$]*) Любой не-знак доллара
  2. ((?: \ $ \ D +) *) Любой «Знак доллара с хотя бы одним номером»
  3. (.*?) Любой символ
  4. (?=<br|$) До конца (<br> или $) (contentEditable преобразует переводы строк в <br> с)
0 голосов
/ 01 ноября 2011

Вы пытались использовать флаг m (многострочный) помимо флага g (глобальный)?

Вот ссылка, которая может помочь: http://www.w3schools.com/jsref/jsref_obj_regexp.asp

Например: / регулярное выражение / гм

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