[英]Regular expression to test exact word with a trailing dot
我有一个动态变量,需要与源匹配。
Source: 'text clientLogin padding float';
search: '.clientLog'
搜索文本带有一个前导点('。'),在比较时应将其省略。
对于上面的示例,我应该:
clientLog
,如果整个单词匹配,则返回true。(在此示例中,由于源具有clientLogin
因此应该返回false)。 我正在尝试使用RegEx来实现这一目标
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
)。 例如,与您的情况类似,这有助于确保“登录”不被视为“日志”的有效匹配。 \\\\b
)-这对于将动态模式提供给RegExp
构造函数是必需的。 在JavaScript中,您可以使用substring()
方法剥离文本,如下所示:
var str = "Hello World!";
var sub_str = str.substring(1, str.length);
在substring(x, y)
,x是新字符串的起始索引,y是结束索引。 JavaScript中的索引从0开始,因此我们必须使用下一个索引来省略字符串中的第一个字符。
您也可以在W3Schools上阅读它。
您可以像这样在字符串中搜索RegEx模式:
var str = "Hello World!";
var pos = str.search(/World/); // Attention: No quotes here!
pos
等于给定表达式的第一个匹配项的索引。 如果您的表达式与字符串不匹配,则pos
等于-1
。
注意, str.search(/World/);
与str.search(new RegExp("World"));
基本相同str.search(new RegExp("World"));
您也可以在W3Schools上阅读它。
要检查,如果您的字符串包含该类名,则可以执行以下操作:
var str = "classname1 classname2 classname3";
var search_str = ".classname2";
if(str.search(new RegExp("\\b(" + search_str.substring(1, search_str.length) + ")\\b")) > -1){
// classname found
} else {
//classname not found
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.