正则表达式匹配与撇号
我试着写正则表达式匹配这些精确匹配精确的字符串:正则表达式匹配与撇号
- “我在”
- “我走了”
我不是在寻找单个字符。我正在寻找一个确切的字符串,并试图了解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')
其值为[“我在”]
不知道为什么会这样。任何指针或照明都会很棒。
您的正则表达式只匹配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')
如果你要匹配输入或输出,您可以使用or
运算符。
/i'm (in|out)/.exec('i\'m out')
非常感谢。这有很大帮助。 – dho
你为什么使用'[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
是的你是对的。我会纠正它。但重点在于他的正则表达式只匹配4个字符。谢谢。 – MYGz
撇号字符不是在正则表达式特殊。您不必引用或转义它。 '/我是(in | out)/'应该这样做。如果你想匹配那些*完整的确切字符串,'/ ^我是(in | out)$ /' – Pointy
也是'.exec()'函数返回一个匹配模式部分的数组。你的最后一个例子工作正常。你期望它返回什么? – Pointy
如果你想看看正则表达式匹配什么,你可以玩http://www.regexpal.com/ – some