如何匹配字符串的开头和结尾但忽略其间的所有内容。我这样做了,但结果总是为零。
document.write( (str.match(/^["“”'’]$/g) || []).length );
// expected results
str = "please \"don't\" talk"; // 2
str = "please don't talk"; // 0
str = "Thomas' car"; // 1
在我的代码str.match(/["“”'’]/g)
中输入所有qoutes
但是^
和$
总是给出零结果
答案 0 :(得分:1)
尝试
document.write( (str.match(/["“”'’]\s|\s["“”'’]/g) || []).length );
并且您将获得具有相邻空间的每个报价的计数。它不会在字符串末尾的引号中工作。如果您还需要,请询问。
|在这种情况下,分隔不同的搜索。因此,我们正在搜索引号,后跟空格或空格,后跟引号。如果你明确地想要\"为了被计算,表达式会更复杂一些。我假设\只是逃避"在字符串中。
答案 1 :(得分:0)
你需要
\B["“”'’]|["“”'’]\B
请参阅demo
non-word boundary \B
确保匹配仅发生在非字边界位置的位置:
\B
匹配两个单词字符之间的任何位置以及两个非单词字符之间的任何位置。
因此,\B["“”'’]
匹配所有不带字([a-zA-Z0-9_]
)字符的子字符串,而["“”'’]\B
匹配未跟随字符字符的撇号。