当前位置: 首页 > 面试题库 >

如何在多行中使用JavaScript正则表达式?

居飞扬
2023-03-14
问题内容

var ss= “

aaaa\nbbb\nccc
ddd”;
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr); // null

我希望可以拾取PRE块,即使它跨越换行符也是如此。我以为’m’标志可以做到。才不是。

所以解决方案是:

var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr);     // <pre>...</pre> :)

有谁不那么神秘吗?

编辑:这是重复的,但是由于它比我的更难找到,因此我不会删除。

它建议[^]作为“多行点”。我仍然不明白的是为什么[.\n]不起作用。猜猜这是JavaScript的不幸部分之一。


问题答案:

[.\n]因为.里面没有特殊的含义而不起作用[],只是表示文字.(.|\n)将是一种指定“任何字符,包括换行符”的方法。如果要匹配所有换行符,则还需要添加\r以包括Windows和经典Mac
OS样式的行尾(.|[\r\n])

事实证明,这有点麻烦且缓慢(请参阅KrisWebDev的答案以获取详细信息),因此更好的方法是使用匹配所有空白字符和所有非空白字符[\s\S],这将匹配所有内容,并且速度更快且更简单。

通常,您不应尝试使用正则表达式来匹配实际的HTML标签。例如,请参阅这些问题以获取有关原因的更多信息。

相反,请尝试实际在DOM中搜索所需标签(使用jQuery可以简化此操作,但您始终可以document.getElementsByTagName("pre")使用标准DOM),然后如果需要与内容匹配,则使用regexp搜索这些结果的文本内容。



 类似资料:
  • 问题内容: 我想在JavaScript中创建一个方法,并且我认为使用正则表达式是最简洁的方法。但是,我不知道如何将变量传递给正则表达式。我能做到这一点已经将取代所有的实例有。 但是我想做这样的事情: 但是显然这只会替换文本…所以如何将这个变量传递给我的正则表达式字符串? 问题答案: 代替使用语法,可以构造一个新的RegExp对象: 您可以通过这种方式动态创建正则表达式对象。然后,您将执行以下操作:

  • 问题内容: 我有一个很长的正则表达式,我希望在JavaScript代码中将其分成多行,以根据JSLint规则将每行长度保持80个字符。我认为这对阅读更好。这是模式样本: 问题答案: 您可以将其转换为字符串并通过调用创建表达式: 笔记: 将 表达式文字 转换为字符串时,您需要对所有反斜杠进行转义,因为在评估字符串文字时会消耗反斜杠。(有关更多详细信息,请参见Kayo的评论。) 接受修饰符作为第二个参

  • 本文向大家介绍如何在TestNG中使用正则表达式?,包括了如何在TestNG中使用正则表达式?的使用技巧和注意事项,需要的朋友参考一下 我们在TestNG中使用正则表达式来使用以某种模式命名的一组测试方法。 示例 Testng xml文件。 所有名称开头为Payment的测试方法都将从回归套件中排除。 示例 Login()将被执行,但是所有以名字Payment开头的方法都将被排除在执行之外。这是使

  • 问题内容: 我有一个字符串A,想测试另一个字符串B是否不属于其中。这是一个非常简单的正则表达式,其结果随后可以反转。 我可以做: 然后将其反转,如下所示: 我的问题是,我需要在正则表达式中执行此操作,而不要使用它们的结果。就像是: (不起作用) 换句话说:正则表达式应该测试是否存在,并在这种情况下返回true。 JavaScript有可能吗? 问题答案: 尝试: (简短)说明: 因此,用简单的英语

  • 问题内容: 我有一个模式定义为的猫鼬模型- 并且模型定义为- 现在我想从请求对象参数中搜索标题,标签,描述字段,例如 现在,我如何确保也包括任何在标题或描述中找到该术语的结果,而不仅是两个结果都存在。另外,如何在标签数组中搜索匹配的字符串 问题答案: 您可以在猫鼬中使用 $ or 运算符返回匹配项 $ or http://docs.mongodb.org/manual/reference/oper

  • 问题内容: 我正在尝试实现一个接受字符串列表的Web服务,每个字符串都是一个正则表达式。需要将这些与数据库的六列进行比较,并且需要返回任何匹配的行。 我相信Oracle具有我可以使用的regexp_like()函数,但是我正在寻找使用Hibernate做到这一点的 最佳 方法,因此,我不反对持久性引擎。 我从这样的东西开始,其中参与者集合包含正则表达式: 这是行不通的,因为“输入”不会执行我想要的