Javascript匹配子字符串并删除它之后的所有内容

van*_*van 5 javascript string

我需要匹配字符串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的长度,因此如果我们想在返回的值中包含它,我们将它添加到返回索引的长度,给我们返回的结果!


And*_*ore 5

如果您只想匹配 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)