Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript正则表达式传输程序?_Javascript_Regex_Perl_Whitespace_Transpiler - Fatal编程技术网

JavaScript正则表达式传输程序?

JavaScript正则表达式传输程序?,javascript,regex,perl,whitespace,transpiler,Javascript,Regex,Perl,Whitespace,Transpiler,此问题专门针对transpiler或transpiler扩展RegExp()is对象创建是。 JavaScript似乎不允许在其正则表达式中使用不敏感的空格。在正则表达式中,是否有JavaScript的transpiler允许来自perl的类似/x的东西 /x和/xx单个“/x”告诉正则表达式解析器忽略大部分内容 既不反斜杠也不在括号内的空白 类。您可以使用它将正则表达式分解为更多 可读部分。此外,“#”字符被视为元字符 引入运行到模式结束分隔符的注释,或 如果图案延伸到下一行,则移动到当前行的

此问题专门针对transpiler或transpiler扩展
RegExp()
is对象创建是。

JavaScript似乎不允许在其正则表达式中使用不敏感的空格。在正则表达式中,是否有JavaScript的transpiler允许来自perl的类似
/x
的东西

/x
/xx
单个“/x”告诉正则表达式解析器忽略大部分内容 既不反斜杠也不在括号内的空白 类。您可以使用它将正则表达式分解为更多 可读部分。此外,“#”字符被视为元字符 引入运行到模式结束分隔符的注释,或 如果图案延伸到下一行,则移动到当前行的末尾。 因此,这非常类似于普通的Perl代码注释。(你可以 仅当注释前面有结束分隔符时,才将其包含在注释中 用反斜杠,所以要小心!)

这允许您编写类似于

let res = name.match(/^([^\d]*?)(?:\s*[.,]\s*([0-9]+)(?: mo)?)?[.,]?$/);
像这样,

let res = name.match(/
  ^
  ([^\d]*?)                       # name
  (?:\s*[.,]\s*([0-9]+)(?: mo)?)? # age, mo
  [.,]?                           # trailing dirt
  $
 /);

我相信您正在寻找与此完全相同的内容:

更新了问题:此问题专门针对transpiler或transpiler扩展。RegExp()is对象创建速度非常慢,每次迭代都会构造RegExp,这将是类似于
persistent_var | |=new RegExp(…)。如果您特别想要一个工具,那么无论如何这都是离题的。@ikegami每次遇到该模式都会产生运行时编译成本,这是相当可观的。不,成本只发生一次。