正则表达式捕获引号后跟非标点字符

时间:2015-03-05 15:04:28

标签: javascript regex

我有以下正则表达式匹配开头引号:

/'(?=\b)/g

但后来我意识到它还捕获了don'tit's等内容。

所以我添加了另一条规则:

/'(?=\b[^a-zA-Z])/g

捕获一个开头的引号,后面没有字母(在这种情况下为ts)。但现在没有任何引号被突出显示。

我是否以错误的方式修改了正则表达式?

修改

哦,我意识到我的愚蠢错误。无论如何,这就是我想要做的事情:

  

“两个'三'”

     

“四不要”

我想匹配'中的three开头,而不是'don't中的it's匹配

4 个答案:

答案 0 :(得分:2)

您可以尝试使用此正则表达式来匹配引号,但请跳过don't it's之类的情况:

/(?:^|[^a-zA-Z])'|'(?![a-zA-Z])/gm

RegEx Demo

答案 1 :(得分:2)

您可以使用以下正则表达式仅匹配开始'

/(?!\b)'/g

查看测试用例中的demo

答案 2 :(得分:2)

你在错误的地方环顾四周。您希望查找引号前面没有任何内容的实例,并以字符开头。这可能会起作用

/\b'\B/

答案 3 :(得分:1)

参考您的上次编辑,此正则表达式/[\.\,\;\?\!\s]+'/g正是您要找的,它会匹配'three'等句子中的引号并跳过您需要的内容(don't and it's之类的句子)。< / p>

Here's a DEMO