在使用正则表达式模式搜索匹配项时,是否有一种简单的方法可以忽略目标字符串中的空格?例如,如果我的搜索是"猫",我希望"c ats"或"ca ts"匹配.我不能事先删除空格,因为我需要找到匹配的开始和结束索引(包括任何空格)以突出显示该匹配,并且任何空格都需要用于格式化目的.
解决史蒂文对Sam Dufel的回答的评论
谢谢,听起来就像是要走的路.但我只是意识到,如果他们按照换行符我只想要可选的空白字符.例如,"c \n ats"或"ca \n ts"应匹配.但如果没有新行,就不希望"c ats"匹配.关于如何做到这一点的任何想法?
这应该做的伎俩:
/c(?:\n\s*)?a(?:\n\s*)?t(?:\n\s*)?s/
Run Code Online (Sandbox Code Playgroud)
有关此匹配的"猫"的所有不同变体,请参阅此页面.
您也可以使用条件解决此问题,但在正则表达式的javascript风格中不支持它们.
您可以\s*
在搜索字符串中的每个字符之间插入一个字符,这样,如果您要寻找猫,就可以使用c\s*a\s*t\s*s\s*s
它很长,但是您当然可以动态地构建字符串。
您可以在这里看到它的工作:http : //www.rubular.com/r/zzWwvppSpE
尽管从技术上来说,可接受的答案是正确的,但如果可能的话,一种更实用的方法是将正则表达式和搜索字符串中的空格都去除。
如果您要搜索“我的猫”,而不是:
myString.match(/m\s*y\s*c\s*a\*st\s*s\s*/g)
Run Code Online (Sandbox Code Playgroud)
做就是了:
myString.replace(/\s*/g,"").match(/mycats/g)
Run Code Online (Sandbox Code Playgroud)
警告:您不能仅通过用空字符串替换所有空格来对正则表达式进行自动化,因为它们可能以负数出现,否则会使您的正则表达式无效。
归档时间: |
|
查看次数: |
194359 次 |
最近记录: |