Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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_String_Replace_Double Quotes - Fatal编程技术网

Javascript 带双引号的撇号/单引号的正则表达式

Javascript 带双引号的撇号/单引号的正则表达式,javascript,regex,string,replace,double-quotes,Javascript,Regex,String,Replace,Double Quotes,我目前正在使用正则表达式(Javascript)用智能引号替换双引号: // ie: "quotation" to “quotation” 下面是我用来替换双引号的表达式: str = str.replace(/"([A-Za-z ]*)"/ig, "“$1”") 如果引号中的短语不包含额外的标点符号,则上述操作非常有效,但是,我还需要替换任何撇号: // ie: replace "It's raining ag

我目前正在使用正则表达式(Javascript)用智能引号替换双引号:

// ie: "quotation" to “quotation”
下面是我用来替换双引号的表达式:

str = str.replace(/"([A-Za-z ]*)"/ig, "“$1”")
如果引号中的短语不包含额外的标点符号,则上述操作非常有效,但是,我还需要替换任何撇号:

// ie: replace "It's raining again" with “It’s raining again!”
替换单引号/撇号的表达式如果未封装,则可以正常工作:

str.replace(/\'\b/g, "’"); // returns it's as it’s correctly

// Using both:
str.replace(/"([A-Za-z ]*)"/ig, "“$1”").replace(/\'\b/g, "’");

// "It's raining again!" returns as "It’s raining again!"
// Ignores double quotes
我知道这是因为用于替换双引号的表达式仅与字母匹配,但我对正则表达式的有限经验使我对如何为可能也包含单引号的引号创建匹配感到困惑


任何帮助都将不胜感激!提前感谢。

您可以在引号中包括除引号外的所有内容:

str = str.replace(/"([^"]*)"/ig, "“$1”")
另一个选项:使用非贪婪搜索:

str = str.replace(/"(.*?)"/ig, "“$1”")
此外,我不确定您是否只需要更改单词末尾的单引号。也许最好把它们都换了

replace(/\'/g, "’");

您可以在引号中包括除引号以外的所有引号:

str = str.replace(/"([^"]*)"/ig, "“$1”")
另一个选项:使用非贪婪搜索:

str = str.replace(/"(.*?)"/ig, "“$1”")
此外,我不确定您是否只需要更改单词末尾的单引号。也许最好把它们都换了

replace(/\'/g, "’");

你可以搜索任何不是
”的东西。如果你有类似
“嘿,”她说,“怎么了?”
作为你的
str

str.replace(/"([^"]*?)"/ig, "“$1”").replace(/\'\b/g, "’");

您可以搜索任何非
的内容。我也会和
做一个懒散的匹配,以防你有类似
“嘿,”她说,“怎么了?”
作为你的
str

str.replace(/"([^"]*?)"/ig, "“$1”").replace(/\'\b/g, "’");

为了添加到当前答案中,您正在对双引号替换的
[a-Za-z]*
执行匹配,这意味着“匹配大写、小写或空格”。这不匹配,因为匹配表达式不包含单个引号


遵循匹配“除另一个双引号外的任何内容”的建议,因为在原始正则表达式中,一个字符串如
她说“外面下雨了”。他说“真的吗?”
将导致
她说”他说:“真的吗?”
(贪婪匹配将跳过“内部”双引号。)

为了添加到当前答案中,您正在对双引号替换的
[a-Za-z]*
执行匹配,这意味着“匹配大写、小写或空格”。这不匹配,因为匹配表达式不包含单个引号


遵循匹配“除另一个双引号外的任何内容”的建议,因为在原始正则表达式中,一个字符串如
她说“外面下雨了”。他说“真的吗?”
将导致
她说”他说:“真的吗?”(贪婪匹配将跳过“内部”双引号。)

最好限制引号左右的特殊字符,尤其是在html文件中出现这种情况时。我正在用这个

str = str.replace(/([\n >*_-])"([A-Za-z0-9 ÆØÅæøå.,:;!#@]*)"([ -.,!<\n])/ig, "$1«$2»$3");

str=str.replace(/([\n>*.-])”([A-Za-z0-9ÆØæå,:;!#@*)”)([-,!最好限制引号的左右特殊字符,特别是在html文件中出现这种情况时。我正在使用它

str = str.replace(/([\n >*_-])"([A-Za-z0-9 ÆØÅæøå.,:;!#@]*)"([ -.,!<\n])/ig, "$1«$2»$3");

str=str.replace(/([\n>*.-])“([A-Za-z0-9ÆØæå,:;!#@])”([-,!非常感谢-非常有用!字符串匹配的结尾是我的一个疏忽,因为我从我编写的一个旧函数复制了它,该函数需要匹配用单引号封装的单词,因此是边界条件。感谢您指出:)Nick,我很高兴帮助你!非常非常感谢-非常有用!字符串匹配的结尾是我的疏忽,因为我从我编写的一个旧函数中复制了它,该函数需要匹配单引号封装的单词-因此是边界条件。感谢你指出:)Nick,我很高兴能帮助你!非常好,非常感谢!非常好,非常感谢!非常感谢你的输入,非常感谢。如果没有这些回复的慷慨建议和帮助,我可能仍在努力处理javascript中的一些字符串替换,但除此之外,我将继续引用它们有助于提高我对表达式的整体理解!再次感谢:)我很高兴听到它很有用!非常感谢您的输入,非常感谢。如果没有这些回复的慷慨建议和帮助,我可能仍在努力解决javascript中的一些字符串替换问题,但除此之外,我将继续引用它们,以帮助提高我对表达式的整体理解(我很高兴听到它很有用!