当量词是模式的一部分时,JavaScript中的RegExp

RegExp in JavaScript, when a quantifier is part of the pattern

本文关键字:分时 一部 JavaScript RegExp 中的 量词 模式      更新时间:2024-05-26

我一直在尝试使用一个正则表达式来匹配介于插入符号(小于和大于)之间的任何文本。

所以它看起来像:^<我想要选择的文本>^

我试过这样的方法,但不起作用:^<(.*?)>^

我想这是可能的,对吧?我想我经历如此艰难的原因是因为插入符号充当了一个量词。谢谢你给我的帮助!

更新

只是为了让每个人都知道,他们从不是我工作

 /'^<(.*?)>'^/

但是,事实证明,我得到的是html实体,因为我是通过使用.innerHTML属性获得字符串的。换句话说,

> ... &gt;
< ... &lt;

为了解决这个问题,我的regexp实际上看起来是这样的:

'^&lt;(.*?)((.|'n)*)&gt;'^

这包括中间的字符串应该是任何字符或新行。谢谢

您需要转义^符号,因为它在JavaScript正则表达式中具有特殊含义。

 /'^<(.*?)>'^/

在JavaScript正则表达式中,^表示字符串的开始,除非使用了m修饰符,在这种情况下,它表示行开始。

这应该有效:

'^<(.*?)>'^

在正则表达式中,如果要使用具有特殊含义的字符(插入符号、括号、管道等),则必须使用反斜杠对其进行转义。例如,('w'b)*'w'.将选择一个以句点结尾的单词序列。

小心

如果必须将regex模式作为字符串传递,即没有像javascript或perl中那样的regex文本,则可能必须使用反斜杠,编程语言将其转义为单个反斜杠,然后由regex引擎处理
多种语言中的相同正则表达式:

Python:
  import re
  myRegex=re.compile(r"'^<(.*?)>'^") # The r before the string prevents backslash escaping
PHP:
  $result=preg_match("/''^<(.*?)>''^/",$subject); // Notice the double backslashes here?
JavaScript:
  var myRegex=/'^<(.*?)>'^/,
      subject="^<blah example>^";
  subject.match(myRegex);

如果你告诉我们你用的是什么编程语言,我们就能给你一些完成的代码。

编辑:哇,甚至没有注意到这被标记为javascript。然后,您根本不必担心双反斜杠。

编辑2:'b表示单词边界。虽然我同意你的是我自己会用的。