我有一个动态变量,需要与源进行匹配。
Source: 'text clientLogin padding float';
search: '.clientLog'
搜索文本有一个前导点('.'),在比较时应将其省略。
对于上面的例子我应该:
- 获取“.”(点)之后的搜索部分
- 检查搜索文本的来源,即
clientLog
,如果整个单词匹配,则返回 true。(在本例中,它应该返回 false,因为源具有clientLogin
)。<
我正在尝试使用正则表达式来实现此目的
var regEx = new RegExp(k); // k is the search text
if(regEx.test(classNames)){....
上面的代码在 jQuery.each 中,k 是正在迭代的对象的键。我不知道如何省略 '.'但请阅读某处以实现单词边界以实现精确匹配。
请提出建议。
谢谢
最佳答案
试试这个:
var
source = 'text clientLogin padding float',
search = '.clientLog',
pattern = '\\b'+search.replace(/^\./, '')+'\\b',
result = new RegExp(pattern).test(source);
注释:
- 我们去掉开头的“.”构建模式时从搜索字符串中获取
- 我们使用单词边界标记 (
\b
)。这有助于确保“login”不被视为“log”的有效匹配,例如,就像您的情况一样。 - 双重转义 (
\\b
) 是必要的,因为我们将模式构建为字符串 - 这对于馈送到RegExp
构造函数的动态模式是必要的.
关于javascript - 用于测试带有尾随点的精确单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39249586/