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 - Fatal编程技术网

Javascript-正则表达式替换忽略某些特殊字符

Javascript-正则表达式替换忽略某些特殊字符,javascript,regex,Javascript,Regex,我有一根绳子,可以是 Samsung Blu-Ray Player Samgung Bluray player Samsung Blu/Ray player 我知道我想找到并替换bluray(稍后:给它某种颜色)。 因此,我想用正则表达式替换这个词。但不知道这种情况下的正则表达式语法。它应该忽略“/”和“”,并找到不区分大小写的字符串。您可以使用 str = str.replace(/samsung blu[^\w]?ray player/gi, 'Samsung Blu Ray player

我有一根绳子,可以是

Samsung Blu-Ray Player
Samgung Bluray player
Samsung Blu/Ray player
我知道我想找到并替换bluray(稍后:给它某种颜色)。
因此,我想用正则表达式替换这个词。但不知道这种情况下的正则表达式语法。它应该忽略“/”和“”,并找到不区分大小写的字符串。

您可以使用

str = str.replace(/samsung blu[^\w]?ray player/gi, 'Samsung Blu Ray player')
在哪里

  • [^\w]?
    -是任何非单词字符(非字母数字)
  • 使其成为可选的
  • /gi
    -标志表示
    g
    lobal搜索和case
    i
    nsensitive
试试这个:

var str = "Samsung Blu-Ray Player";
var res = str.replace(/(Blu.*?ray)/gi, '<span style="color:red">$1</span>');
console.log(res);
var str=“三星蓝光播放器”;
var res=str.replace(/(蓝光)/gi,$1');
控制台日志(res);

/\bblu\s*[^\w]?\s*ray\b/gi

\b
这个词的边界比匹配
blurayfish
之类的词更保守

\s*
使其对空白不敏感,因此
蓝光
将匹配

[^\w]
匹配非单词符号,如
-
表示可选

gi
表示所有匹配项,不区分大小写

这是一个更具说明性的页面,旁边有测试用例和解释


您的
blueray
可能遭受的所有可能性是什么?我很抱歉。在B和y之间的所有位置上,应忽略特殊字符。因此正则表达式应该搜索“blura*y”,其中*只能是特殊字符。
/\bblue?\s*[^\w]?\s*ray\b/gi
我建议使用
蓝光
为什么要过度复制它?span是不必要的。OP想要给比赛上色,这就是为什么它会匹配,我的正则表达式只用于给字符串上色,这意味着蓝光,这是我从OP问题中了解到的:))str=“三星蓝光播放器”呢?更快、更干净:)+1用于你的幽默:),但是
str
可能是一个更大的文本,其中的短语会出现多次。