正则表达式匹配精确字符串与撇号

时间:2016-12-03 06:12:05

标签: javascript regex

我正在尝试编写正则表达式来匹配这些确切的字符串:

  • “我在”
  • “我出去了”

我不是在寻找一个角色。我正在寻找一个确切的字符串并试图了解reg exs的工作原理。

我已阅读Eloquent JS中的MDN文档和chapter,以及stack overflow次对话中的搜索结果。

我知道方括号中的任何内容都代表一个字符集,而且字符不必按顺序出现。

我尝试了/[i\'m] in/,它可以在我的代码中运行,但是当我运行时:

/[i\'m] in/.exec('i\'m in')评估为[“m in”]

我也试过了/i\'m in/,这在我的代码中无法正常运行,但是当我运行时:

/i\'m in/.exec('i\'m in')评估为[“我在”]

不确定为什么会这样。任何指针或照明都会很棒。

1 个答案:

答案 0 :(得分:1)

您的正则表达式只匹配4个字符,而您的完整字符串长度为6个字符。

/[i\'m] in/.exec('i\'m in')

正则表达式 - > [i\'m] in

它将匹配4个字符。第一个字符可以是i\'m。第二个字符是space,第三个字符是i,第四个字符是n。您不必在正则表达式中使用\ '。但是您需要在JS字符串中使用\作为'

字符串 - > 'i\'m in'
m in是正则表达式匹配的字符串。 它也可以匹配这些字符串: i in' in

如果你想匹配字符串的所有6个字符,你可以使用这样的东西:

/i'm in/.exec('i\'m in')

演示:https://repl.it/EfDS/3

如果您想要匹配或关闭,您可以使用or运算符。

/i'm (in|out)/.exec('i\'m out')

演示:https://repl.it/EfDS/4