我的正则表达式可以通过一行输入正常工作,但不要有两个或更多......

时间:2011-11-01 11:21:18

标签: javascript jquery regex html5

我正在研究这个小代码:http://jsfiddle.net/5kXBk/
如果在第一个div中键入“foo $ 42 bar”,则会得到正确的文本颜色。但是如果你添加一个新行并开始写,那么文本仍然是绿色的......

我该如何解决这个问题? 谢谢!

2 个答案:

答案 0 :(得分:2)

您在RegExp中使用^$。这导致RegExp只匹配一个字符串:一个完全匹配模式的字符串。

使用以下RE代替小提琴: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> s)

答案 1 :(得分:0)

您是否尝试过使用除g(全局)标志之外的m(多行)标志?

以下是可能有用的链接:http://www.w3schools.com/jsref/jsref_obj_regexp.asp

例如:/ regexp / gm