繁体   English   中英

正则表达式的Javascript字符串,无需转义

[英]Javascript String to Regex without Escaping

我对nodejs / javascript中的正则表达式有疑问。

我想要实现的是将一个正则表达式(以字符串形式从数据库中加载)转换为js中的RegExp对象,而不进行任何转义。

var regex       = /Apache\/([0-9\.]+) \(([a-zA-Z ]+)\) (.+)/;
var regexString = '/Apache\/([0-9\.]+) \(([a-zA-Z ]+)\) (.+)/';

var str = 'Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny18';

var match = str.match(regex);
var match2 = str.match(new RegExp(regexString));
console.log(match);
console.log(match2);

到目前为止,这就是我尝试过的方法。 但是如您所见,如果字符串被转义,它将不匹配...我的输出:

[ 'Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny18',
  '2.2.9',
  'Debian',
  'PHP/5.2.6-1+lenny18',
  index: 0,
  input: 'Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny18' ]
null

我是否缺少简单的东西? 如果没有任何建议给我? 谢谢

new RegExp()的字符串参数中使用时,不应出现两个边界/

另外,当您将字符串写为文字时(由于您是从数据库中获取字符串,因此我不真正理解您的情况),您需要将该文字中的任何反斜杠转义为\\\\

 var regex = /Apache\\/([0-9\\.]+) \\(([a-zA-Z ]+)\\) (.+)/; var regexString = 'Apache\\/([0-9\\.]+) \\\\(([a-zA-Z ]+)\\\\) (.+)'; var str = 'Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny18'; var match = str.match(regex); var match2 = str.match(new RegExp(regexString)); console.log(match); console.log(match2); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM