gpt4 book ai didi

javascript - 使用正则表达式拆分字符串

转载 作者:行者123 更新时间:2023-11-30 10:13:08 24 4
gpt4 key购买 nike

我有一个需要正确分隔的字符串:

self.view.frame.size.height = 44

我只需要获取 viewframesizeheight。我需要用正则表达式来完成。到目前为止,我已经尝试了很多变体,但没有一个与我想要的更接近。我的代码现在看起来像这样:

var testString = 'self.view.frame.size.height = 44'
var re = new RegExp('\\.(.*)\\.', "g")
var array = re.exec(testString);
console.log('Array length is ' + array.length)
for (var i = 0; i < array.length; i++) {
console.log('<' + array[i] + ">");
}

而且它根本不起作用:

Array length is 2
<.view.frame.size.>
<view.frame.size>

我是 Javascript 的新手,所以也许我想要不可能的事情,请告诉我。谢谢。

最佳答案

在 Javascript 中,执行带有 g 修饰符的正则表达式不会立即返回所有匹配项。您必须对同一个输入字符串重复执行它,并且每个都返回下一个匹配项。

您还需要更改正则表达式,使其一次只返回一个单词。 .* 是贪心的,所以它返回可能的最长匹配,所以它返回第一个和最后一个 . 之间的所有单词。 [^.]* 将匹配一系列非点字符,因此它只会返回一个单词。您不能在正则表达式中包含第二个 .,因为这会干扰重复——每次重复都在上一个匹配结束后开始搜索,并且没有开始 . 在词尾 . 之后。此外,在 height 之后没有 .,所以最后一个词不会匹配它。

编辑:我已经将正则表达式更改为使用 \w* 而不是 [^.]*,因为它捕获了整个 height = 44 字符串,而不仅仅是 height

var testString = 'self.view.frame.size.height = 44';
var re = /\.(\w*)/g;
var array = [];
var result;
while (result = re.exec(testString)) {
array.push(result[1]);
}
console.log('Array length is ' + array.length)
for (var i = 0; i < array.length; i++) {
console.log('<' + array[i] + ">");
}

关于javascript - 使用正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25335804/

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