gpt4 book ai didi

带有分号和空格的 JavaScript 正则表达式

转载 作者:行者123 更新时间:2023-12-03 05:02:38 24 4
gpt4 key购买 nike

乍一看这似乎有点毛茸茸的,所以我希望有人能重温一下。

目的是将字符串拆分为子字符串数组,之前或之后要拆分的字符将保留为子字符串组件的一部分(即,不会像典型拆分那样丢失任何内容)。分割应该发生在“endsWith”中定义的字符之后和“startsWith”中定义的字符之前。

最初我用“endsWith”功能编写它,并且运行良好(如帖子中进一步演示的那样),但是当我添加“startsWith”功能时,事情开始变得有点奇怪。

var input = "foo bar;baz#qux>quux,rawr";

var startsWith = ['#', ','];
var endsWith = [';', '\\s', '>'];

var re = new RegExp("(?=[" + startsWith.join('') + "])(.*?[" + endsWith.join('') + "]+)", "g");
console.log(re); //=> /(?=[#,])(.*?[;\s>]+)/g

var result = input.split(re).filter(Boolean);
console.log(result);

结果:[ 'foo bar;baz', '#qux>', 'quux,rawr' ]

预期:[ 'foo ', 'bar;', 'baz', '#qux>', 'quux', ',rawr' ]

问题在于它没有在空格或分号之后进行分割,奇怪的是它在大于符号之后进行分割。

(在startsWith中添加第二个字符后,很明显它不会在公共(public)端上拆分 - 无论正则表达式中“#”和“,”的顺序如何)

另一个有趣的事情是删除“startsWith”内容并创建它:

    var re = new RegExp("(.*?[" + endsWith.join('') + "]+)", "g");
console.log(re); //=> /(.*?[;\s>]+)/g

分号和空格现在可以使用:[ 'foo ', 'bar;', 'baz#qux>', 'quux,rawr' ]

但我也想要startsWith功能(将'#qux'和',rawr'分开),并且我不明白为什么在添加回来时我会看到这个问题。

最佳答案

现在检查一下

var input = "abc&foo bar;baz#qux>quux,awrr";
var re = /([#,]?[^#;>\s,]*[\;\s\>]?){1}/g
console.log(re);

var result = input.split(re).filter(Boolean);
console.log(result);

关于带有分号和空格的 JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42156746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com