需要将一个小PHP函数转换为Javascript(包括正则表达式)
我有下面的php函数,这是我不久前写的。然而,现在我将一些解析/匹配移到客户端需要将一个小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
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上了。