【问题标题】:convert this php regex to javascript [closed]将此 php 正则表达式转换为 javascript [关闭]
【发布时间】:2012-03-22 04:58:52
【问题描述】:

我想知道如何将这个确切的 php 正则表达式功能更改为 javascript?

$ismatch= preg_match('|She is a <span><b>(.*)</b></span>|si', $sentence, $matchresult);

if($ismatch)
{
      $gender= $matchresult[1];
}
else{ //do other thing }

【问题讨论】:

  • 坏消息,JS不支持dotall开关stackoverflow.com/questions/1068280/…
  • 如果措辞得当并且重点放在 dotall 修饰符上,这可能是一个很好的问题......在目前的状态下,这听起来像是一个“为我工作”的问题。

标签: php javascript regex converter


【解决方案1】:

这不是很简单,因为 JavaScript 不支持 s 修饰符。

等效的正则表达式对象是

/She is a <span><b>([\s\S]*)<\/b><\/span>/i

代码的功能(如果匹配,则从匹配中提取第 1 组)将在 JavaScript 中完成,如下所示:

var myregexp = /She is a <span><b>([\s\S]*)<\/b><\/span>/i;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
} else {
    // do other thing
}

【讨论】:

  • 有关[\s\S] 方法的信息可以在MDN 找到:(小数点)匹配除换行符之外的任何单个字符:\n\r\u2028\u2029。 ([\s\S] 可用于匹配任何字符,包括换行符。)
  • 或者使用特殊的JS特性[^],它匹配任何字符。
  • @Qtax:哇,我以前从没见过这个。有这方面的文件吗?
  • @Tim,不知道,没有看到它的文档,但也没有真正寻找它。与 JS 中的 Perl/PCRE 不同,第一个未转义的 ] 似乎毫无例外地结束了字符类,因此 [^] 将匹配所有内容,除了什么都没有,即一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 2012-08-12
相关资源
最近更新 更多