JavaScript中的正则表达式与字符串不匹配?
我有这样的JavaScript代码:JavaScript中的正则表达式与字符串不匹配?
var textareas = document.getElementsByTagName('textarea');
var content = textareas[0].value;
var reg = new RegExp(/^.*[[]#.+#[]].*$/mgi);
var res = content.match(reg); // always null
内容VAR包含包含像[#some text goes here#]
图案长的多行字符串。我用一些在线测试工具测试了正则表达式,它对字符串起作用。在JavaScript中使用正则表达式失败 - 任何想法为什么?
谢谢!
这个怎么样?
var content = 'foo\nhead [#some text goes here#] tail\nbar';
var reg = new RegExp(/\[#.+#\]/mgi);
var res = content.match(reg);
在执行时,res
包含字符串'[#some text goes here#]'
。
请注意,我已经逃过[
和]
。如果他们没有逃脱,那么封闭在他们身上的任何东西形成一个character class。
不,我试过... – EOB 2012-02-07 15:41:05
你尝试了什么?这似乎对我有用。 – 2012-02-07 15:43:48
@EOB:如果它不适合你,那么你还没有正确描述你想要的结果。 – 2012-02-07 15:44:51
您使用[[]
逃跑[
,这是很好的,但你不能使用[]]
逃避]
,因为它的第一]
结束字符类的正则表达式。这工作得很好:
/^.*\[#.+#\].*$/mgi
在你只需要单块,而不是整条生产线,使用的情况:
/\[#.+#\]/mgi
[[]和\\是一样的,[不是吗? – EOB 2012-02-07 15:41:26
对不起,你说得对。更新了我的答案。 – 2012-02-07 15:43:24
这应该抓住哈希值之间的文本(例如, “一些文字在这里”):
var reg = /[^\[]*\[#([^\#]+)#\]/gims
您在使用'^'和'$与'M'修改一起'。那么这是否意味着你只想匹配'[#some text goes here#]'是唯一的行? – 2012-02-07 15:47:29