我试图确定textarea文本是否包含带有模式的特殊变量:
##Contact.some_text_here##
txtareaval= 'Some text some text [variable field="##Contact.Address 3##" /]some[variable field="##Contact.Comments##" /][variable field="##Contact.ContactCompany##" /]Some text some text [variable field="##Contact.Email##" /]some[variable field="##Contact.Fax Number##" /]Some text some text [variable field="##Contact.First Name##" /]Some text some text [variable field="##Contact.Home Number##" /] Some text some text.';
我正在使用类似的东西\W##[C][o][n][t][a][c][t][.]
。虽然不行。
我这样做了,希望对您有用:
var res = str.match(/"##Contact[.].+?"/g);
模式是这样的。首先,使用/ /
字符将您的正则表达式参数包含在match函数中。然后,提供您的正则表达式选项(在这种情况下g
为全局,否则正则表达式引擎将在第一个匹配项之后返回)。
接下来,对于模式本身,我将双引号用作查找表达式的一部分,以包围我要查找的内容(作为目标字符串的一部分)以及##
原始正则表达式中的联系人。##
如果需要,添加互补对。
本[.]
类符号是针对点因为是不是已经点解释为一个通配符(正则表达式中的特殊含义)。或者,您可以使用\.
(转义点)。
最后,.+?
均值至少与任何字符匹配一次(在这种情况下,直到下一个双引号),并且与非贪婪字符匹配(通过问号符号)。如果没有非贪婪标记,则正则表达式引擎将一直识别字符,直到字符串中的最后一个双引号引起,这迫使您不得不再次分解字符串。
尝试玩一下jsFiddle中的变体,以自己学习。尝试删除该?
符号,尝试g
在最后删除该选项,尝试将其替换为+
a,*
然后看看会发生什么。对于用+
代替*
,请添加仅包含的字符串,Contact."
然后看看会发生什么。
这是小提琴。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句