如何使用javascript正则表达式在字符串外查找字符串?

时间:2019-06-20 09:03:45

标签: javascript html

我正在尝试获取不在两个字符串字符之间的任何字符串(两个字符串字符之外的任何字符串)。

我尝试了下面的代码,但始终给我“未定义”。

var string = "start<i>ignore text inside here</i>end"
var string = string.match(/[^<i>(.*)<\/i>]/);
console.log(string)

我希望到达这里的是“开始,结束”。但是,每当我运行上面的代码时,结果都是“未定义”。

3 个答案:

答案 0 :(得分:2)

这是一个字符类,表示不匹配任何字符<,>i,(,.,*,),/,并不意味着它将避免匹配完整的句子

[^<i>(.*)</i>]

您可以简单地使用split而不是match

var string = "start<i>ignore text inside here</i>end"
var string = string.split(/<i>.*<\/i>/g);

console.log(string)

答案 1 :(得分:0)

在我看来,您想删除HTML标签和标签内的内容,

在这种情况下,您可以使用此代码,

removeTags(string, array) {
        return array ? string.split("<").filter(function (val) { return f(array, val); }).map(function (val) { return f(array, val); }).join("") : string.split("<").map(function (d) { return d.split(">").pop(); }).join("");
        function f(array, value) {
            return array.map(function (d) { return value.includes(d + ">"); }).indexOf(true) != -1 ? "<" + value : value.split(">")[1];
        }
    }

在这里,在removeTags方法中, 字符串是您要对其执行操作的字符串。 数组是要删除的特定HTML标记,如果要删除所有HTML标记,则传递null。

*

  

如果您要执行其他操作,请告诉我。给一个   例子也一样。

*

答案 2 :(得分:0)

如果您的字符串是一行文本(例如您的示例),则可以使用:

let str = "start<i>ignore text inside here</i>end";
str = str.match(/^([a-z]+)<.*?>.*?<.*?>([a-z]+)$/);
console.log(str[1], str[2]);

您也可以将<.*?>.*?<.*?>替换为<.*?>并获得相同的结果:

let str = "start<i>ignore text inside here</i>end";
str = str.match(/^([a-z]+)<.*?>([a-z]+)$/);
console.log(str[1], str[2]);

无论哪种方式,两个片段均应输出:

  

开始结束

祝你好运。