我想删除引号内的字符串中的文本。以下工作,但我需要修改它,以便它还包括引号,如
"", '', ``,`´ and «
因为每种语言都不同。
var s= "Socken ´Marc Colours` aus Baumwollkomposition"
s= s.replace(/ +´.+` +/g,' ');
我该怎么做?谢谢!
答案 0 :(得分:1)
您可以使用括号([
和]
)来指定字符组,其中组中的任何字符需要匹配。例如:
s = s.replace(/\s*[´"].*?[`"]\s*/g,' ');
这个正则表达式解释说:
\s* ; any whitespace
[´"] ; followed by either ´ or " (add more characters here if needed)
.*? ; and any text
[`"] ; up to the closing ` or " (add more characters here if needed)
\s* ; and finally any trailing whitespace
如您所见,您可以通过将其放入[´"]
组来扩展被视为引用的字符列表。例如,[12]
匹配1
或2
,而[24ab]
匹配2
,4
,a
或{{ 1}}。
快速Google搜索会对b
和[
的工作原理提供一个很好的解释:
POSIX括号表达式是一种特殊的字符类。 POSIX括号表达式匹配一组字符中的一个字符,就像常规字符类一样。它们使用与方括号相同的语法。连字符创建一个范围,开头的插入符号否定括号表达式。
(source)。
答案 1 :(得分:1)
以下代码段将删除您在问题中提供的四种引号内的文本中的所有字词。请注意,匹配是非贪婪的,这意味着它将使用最接近的右引号将每个开头引号匹配。
var s = s.replace(/['"`«].*?['"´»]/g, "");