繁体   English   中英

使用正则表达式测试带尾点的确切单词

[英]Regular expression to test exact word with a trailing dot

我有一个动态变量,需要与源匹配。

Source: 'text clientLogin padding float';
search: '.clientLog'

搜索文本带有一个前导点('。'),在比较时应将其省略。

对于上面的示例,我应该:

  1. 在“。”之后获取搜索部分(点)
  2. 检查源以获取搜索文本,即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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM