我需要匹配字符串Y中的子字符串X,并且需要匹配X,然后在Y之后删除它之后的所有内容.
Tom*_*len 12
码
var text1 = "abcdefgh";
var text2 = "cde";
alert(text1.substring(0, text1.indexOf(text2)));
alert(text1.substring(0, text1.indexOf(text2) + text2.length));
Run Code Online (Sandbox Code Playgroud)
第一个警报不包括搜索文本,第二个警报不包括.
说明
我将解释代码的第二行.
text1.substring(0, text1.indexOf(text2) + text2.length))
Run Code Online (Sandbox Code Playgroud)
text1.substring(startIndex, endIndex)
Run Code Online (Sandbox Code Playgroud)
这段代码从startIndex到endIndex获取每个字符,0是第一个字符.所以在我们的代码中,我们从0(开始)搜索并结束:
text1.indexOf(text2)
Run Code Online (Sandbox Code Playgroud)
这将返回文本1中text2的第一个实例的字符位置.
text2.length
Run Code Online (Sandbox Code Playgroud)
这将返回文本2的长度,因此如果我们想在返回的值中包含它,我们将它添加到返回索引的长度,给我们返回的结果!
如果您只想匹配 Y 中的 X 并仅返回 X,我建议您使用match.
var x = "treasure";
var y = "There's treasure somewhere in here.";
var results = y.match(new RegExp(x)); // -> ["treasure"]
Run Code Online (Sandbox Code Playgroud)
results将是一个空数组或包含第一次出现的x.
如果您想要y包含第一次出现的所有内容x,只需稍微修改正则表达式即可。
var results2 = y.match(new RegExp(".*" + x)); // -> ["There's treasure"]
Run Code Online (Sandbox Code Playgroud)