gpt4 book ai didi

Javascript 正则表达式错误可能需要回顾类型的功能?

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

我正在尝试在 Javascript 学习网站上完成练习。

说明是:

  • 输入:单词字符串,其中一些单词可能包含井号/井号#。

  • 输出:以井号/井号# 为前缀但不包含井号/井号# 的字符串数组。

  • 单独的井号不算数,例如:字符串“#”将返回一个空数组。

  • 如果一个词前面有多个主题标签,则只计算最后一个主题标签(例如“##alot”将返回 ["alot"])
  • 主题标签不能位于单词的中间(例如“in#line hashtag”返回一个空数组)
  • 主题标签必须位于字母字符之前(例如“#120398”或“#?”无效)

我的努力是这样的:

function getHashtags(post) {
return /#(\w+)/.exec(post)
}

但它的结果是:

String Input: Hello #world
Outpu t: [ '#world', 'world', index: 6, input: 'Hello #world' ]

String Input: #lol #sorryNotSorry #heya #coolbeans
Output: [ '#lol','lol', index: 0, input: '#lol #sorryNotSorry #heya #coolbeans']

String Input: # # # #
Output: null

String Input: this is an in#line hash
Output: [ '#line', 'line', index: 13, input: 'this is an in#line hash' ]

String Input: too ##many tags
Output: [ '#many', 'many', index: 5, input: 'too ##many tags' ]

String Input: invalid chars #$? #;wha
Output: null

String Input: "" //empty string
null

String Input: #blue#red#yellow#green
Output:[ '#blue', 'blue', index: 0, input: '#blue#red#yellow#green' ]

我想我需要回溯功能,但我知道 Javascript 不支持它,而且我还没有找到解决方法!谁能帮忙?

最佳答案

您实际上(几乎)正确地做到了。当您使用 exec 时,它只返回第一组结果。如果您继续调用 exec(假设您使用的是全局标志 g),它将开始返回下一个匹配项。这个例子取自 mozilla 的网站:

var myRe = /ab*/g;
var str = 'abbcdefabh';
var myArray;
while ((myArray = myRe.exec(str)) !== null) {
var msg = 'Found ' + myArray[0] + '. ';
msg += 'Next match starts at ' + myRe.lastIndex;
console.log(msg);
}

Exec

我可以补充一点,每个人都可以从这个问题的提出程度中学习。很好地展示了您为解决问题所做的工作。我什至会向您展示如何实现它。

function getHashtags(post)
{
regex = /#(\w+)/g;
arr = [];

while((results = regex.exec(post)) !== null)
{
arr.push(results[1]);
}

return arr;
}

关于Javascript 正则表达式错误可能需要回顾类型的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974438/

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