harglo 发表于 2021-7-28 15:33

JavaScript正则表达式取出中间文本

本帖最后由 harglo 于 2021-7-28 18:04 编辑

JavaScript正则表达式取出中间文本
目标文本:
com1.2.3html
com2.3.4html
com3.4.k5html
com4.5.6html
com5.6.7html
目的:取出com和html之间的文本,不包含com和html。
遇到的问题:取出了中间文本但只有一个,取出来5个但包含了两边的字符串:
var content="com1.2.3html\n" +
                  "com2.3.4html\n" +
                  "com3.4.k5html\n" +
                  "com4.5.6html\n" +
                  "com5.6.7html\n";
      var regex = /com(.*?)html/;
      console.log(content.match(regex));
var content="com1.2.3html\n" +
                  "com2.3.4html\n" +
                  "com3.4.k5html\n" +
                  "com4.5.6html\n" +
                  "com5.6.7html\n";
      var regex = /com(.*?)html/g;
      console.log(content.match(regex));

请问怎样才能取出全部5个中间文本(不包含两边字符串的)。

WolfAvenue 发表于 2021-7-28 15:54

本帖最后由 WolfAvenue 于 2021-7-28 15:56 编辑

var content="com1.2.3html\n" +
                  "com2.3.4html\n" +
                  "com3.4.k5html\n" +
                  "com4.5.6html\n" +
                  "com5.6.7html\n";
      var regex = /(?<=com).+?(?=html)/g;
      console.log(content.match(regex));

Vvvvvoid 发表于 2021-7-28 15:52

var regex = /com(.*?)html/gm;
var str = `com1.2.3html
com2.3.4html
com3.4.k5html
com4.5.6html
com5.6.7html
`;
var m;

while ((m = regex.exec(str)) !== null) {
    if (m.index === regex.lastIndex) {
      regex.lastIndex++;
    }
    console.log(m);
}

Su、 发表于 2021-7-28 15:56

```
var content="com1.2.3html\n" +
                  "com2.3.4html\n" +
                  "com3.4.k5html\n" +
                  "com4.5.6html\n" +
                  "com5.6.7html\n";
      var regex = /com(.*?)html/gm;
    while( res = regex.exec(content))
{
console.log(res);
}
```

vivvn 发表于 2021-7-28 15:58

var content="com1.2.3html\n" +
                  "com2.3.4html\n" +
                  "com3.4.k5html\n" +
                  "com4.5.6html\n" +
                  "com5.6.7html\n";
var regex = /com(.*?)html/g;

str.replace(/\n/g,'').split(regex).filter(it=>it);


stu2162583 发表于 2021-7-28 16:00

var arr =[] ;
content.replace(/com([\w\.]+)html/g, function(s, $1) {
    arr.push($1)
})
arr

angula 发表于 2021-7-28 16:19

Vvvvvoid 发表于 2021-7-28 15:52
var regex = /com(.*?)html/gm;
var str = `com1.2.3html
com2.3.4html


var content="com1.2.3html\n" +
                  "com2.3.4html\n" +
                  "com3.4.k5html\n" +
                  "com4.5.6html\n" +
                  "com5.6.7html\n";
var T = /(?<=com).+?(?=html)/g;
console.log(content.match(T));

harglo 发表于 2021-7-28 16:19

Vvvvvoid 发表于 2021-7-28 15:52
var regex = /com(.*?)html/gm;
var str = `com1.2.3html
com2.3.4html


可以,学习了,谢谢

harglo 发表于 2021-7-28 16:21

WolfAvenue 发表于 2021-7-28 15:54
var content="com1.2.3html\n" +
                  "com2.3.4html\n" +
...

可以,学习了,谢谢

harglo 发表于 2021-7-28 16:23

Su、 发表于 2021-7-28 15:56
```
var content="com1.2.3html\n" +
                  "com2.3.4html\n" +


学习了,谢谢
页: [1] 2
查看完整版本: JavaScript正则表达式取出中间文本