需要将一个小PHP函数转换为Javascript(包括正则表达式)

需要将一个小PHP函数转换为Javascript(包括正则表达式),php,javascript,regex,Php,Javascript,Regex,我有下面的php函数,这是我不久前写的。然而,现在我将一些解析/匹配移到客户端 function artist_name_to_regex($art_name){ $regex_part = preg_quote($art_name); $regex_part = preg_replace('('|\')', '.+', $regex_part); $regex_part = preg_replace('/ /i', '\s?', $rege

我有下面的php函数,这是我不久前写的。然而,现在我将一些解析/匹配移到客户端

function artist_name_to_regex($art_name){
    $regex_part =   preg_quote($art_name);
    $regex_part =   preg_replace('('|\')', '.+', $regex_part);
    $regex_part =   preg_replace('/ /i', '\s?', $regex_part);
    $regex_part =   preg_replace('/(and|&|&|\+)/i', '(and|&|&|\+)', $regex_part);
    return $regex_part;
}
我想从js中这样称呼它:

var regex = artist_name_to_regex('David & the Smokey Sea Horses!');
if(some_str.match(/regex/ig)){
    alert('match found!');
}
我需要修改top函数,以便它:

a) 是用javascript编写的


b) 返回一个将与javascipt一起使用的正则表达式。为什么需要构造这样的正则表达式?看起来您需要知道字符串是否出现在另一个字符串中

这样可以更容易地进行测试:

if (some_str.indexOf('David & the Smokey Sea Horses!') !== -1) {
    alert('match found!');
}
否则,从字符串创建正则表达式相当容易:

function createRegex(pattern) {
    pattern = pattern.replace(/'/g, '.+');
    pattern = pattern.replace(/ /g, '\\s?');
    pattern = pattern.replace(/(and|&|&|\+)/ig, '(and|&|&|\\+)');
    return new RegExp(pattern, 'gi');
}

var customRegex = createRegex('David & the Smokey Sea Horses!');
if (some_str.match(customRegex)) {
    alert('match found!');
}

为什么需要构造这样的正则表达式?看起来您需要知道字符串是否出现在另一个字符串中

这样可以更容易地进行测试:

if (some_str.indexOf('David & the Smokey Sea Horses!') !== -1) {
    alert('match found!');
}
否则,从字符串创建正则表达式相当容易:

function createRegex(pattern) {
    pattern = pattern.replace(/'/g, '.+');
    pattern = pattern.replace(/ /g, '\\s?');
    pattern = pattern.replace(/(and|&|&|\+)/ig, '(and|&|&|\\+)');
    return new RegExp(pattern, 'gi');
}

var customRegex = createRegex('David & the Smokey Sea Horses!');
if (some_str.match(customRegex)) {
    alert('match found!');
}

我不明白,他们都是对的?至于php,不是
'(';| \')
需要是
'/../'
?至于
'/(和&&;amp;amp;\+)/i'
&
将在
之前匹配,看起来它们都是单一替代品,而不是全局替代品。我还不是php方面的专家。你能举个具体的例子说明你是如何调节正则表达式的吗?我不明白,他们都是对的?至于php,不是
'(';| \')
需要是
'/../'
?至于
'/(和&&;amp;amp;\+)/i'
&
将在
之前匹配,看起来它们都是单一替代品,而不是全局替代品。我还不是php方面的专家。你能举个具体的例子说明你是如何调节正则表达式的吗?从这个问题来看,OP似乎也想要“大卫和斯莫基”。。。还有“大卫和烟鬼”通过测试是的,我已经把他的替代品移植到Javascript上了。从问题来看,OP似乎也想要“大卫和烟鬼”。。。还有“大卫和冒烟者”通过了测试是的,我已经将他的替代品移植到Javascript上了。