【发布时间】:2017-12-10 04:03:14
【问题描述】:
我正在学习 Javascript 中的正则表达式
我见过很多通过 OR 运算符与 [] 和 | 在组 () 中进行排他匹配的方法。
我不明白如何使用正则表达式实现 AND 行为。我做了一些研究,但没有找到我需要的东西。
这里是一个例子。我有以下字符串:kata。我想将它与另一个字符串进行比较:steak。
如果steak 中的所有字母都包含在kata 中,则目标是返回true。如果我使用这个正则表达式 [steak] 它返回 true 但实际上它应该返回 false 因为在 kata 中没有“s”。
示例2.String1 = scriptsjava,string2 = javascript,result = true(因为string2包含在string1中)
示例 3.String1 = jscripts,string2 = javascript,result = false(因为 string2 没有完全包含在 string1 中)
示例4.String1 = rkqodlw,string2 = world,result = true(因为字符串世界在第一个字符串中)
我认为使用正则表达式是最好的方法,我认为 string2 是一种模式。我对这个问题的解决方案如下
var validate=true;
var counter = 0;
str2.split("").map(val => {
counter++;
var char = new RegExp(val);
if (char.test(str1) === false) { validate = false;} else
{
str1 = str1.slice(0, counter+1) + str1.slice(counter+1,str1.length);
console.log(str1);
}
});
return validate;
我认为这不是最有效的。您对此有更好的解决方案吗?
【问题讨论】:
-
你最好举几对例子,并写下你对每一对的期望,因为它看起来有点混乱
-
您可以添加您使用的语言吗?正则表达式解决方案很可能不是解决它的最佳方法。
-
正则表达式的工作不是“比较两个字符串”,而是将模式描述与字符串进行匹配。您需要更好地定义您正在尝试做什么,并且可能需要一个不同的工具来完成它。
-
你使用什么语言?
-
您是否要检查
s1中的所有字母是否也必须出现在s1中,包括如果s1中有两个“b”,那么必须有至少在s2中也有两个“b”?
标签: javascript regex