正则表达式匹配与撇号

正则表达式匹配与撇号

问题描述:

我试着写正则表达式匹配这些精确匹配精确的字符串:正则表达式匹配与撇号

  • “我在”
  • “我走了”

我不是在寻找单个字符。我正在寻找一个确切的字符串,并试图了解reg是如何工作的。

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

我明白,方括号内的任何内容都代表一个字符集,而且字符不必在一个序列中出现。

我试图/[i\'m] in/这在我的代码工作,但是当我运行:

/[i\'m] in/.exec('i\'m in')其值为[“米”]

我也尝试/i\'m in/不中我的代码工作,但时当我运行:

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

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

+0

撇号字符不是在正则表达式特殊。您不必引用或转义它。 '/我是(in | out)/'应该这样做。如果你想匹配那些*完整的确切字符串,'/ ^我是(in | out)$ /' – Pointy

+0

也是'.exec()'函数返回一个匹配模式部分的数组。你的最后一个例子工作正常。你期望它返回什么? – Pointy

+0

如果你想看看正则表达式匹配什么,你可以玩http://www.regexpal.com/ – some

您的正则表达式只匹配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

+0

非常感谢。这有很大帮助。 – dho

+2

你为什么使用'[i \ m] {3}'?这不是写这个问题的人想要的。它匹配'iii','ii'','iim','i'i','i''','i'm','imi','im'','imm',''ii' ,'''','''','''','''','''''','''','''','''','''''','mii',' 'mi'','mim','m'i','m'','m'm','mmi','mm''和'mmm'。这个人想要的东西就像'/ ^我是(in | out)$ /' – some

+0

是的你是对的。我会纠正它。但重点在于他的正则表达式只匹配4个字符。谢谢。 – MYGz