gpt4 book ai didi

javascript - 匹配开头和结尾的单词

转载 作者:行者123 更新时间:2023-11-30 07:15:36 24 4
gpt4 key购买 nike

这一定在某个地方......但是在浪费了很多时间之后,我找不到它:我想测试一个字符串匹配:"in"+ * +"ing"

In other words,
"interesting" should result in true, whereas
"insist" and "string" should fail.

我只对测试没有空格的单个单词感兴趣。

我知道我可以在两次测试中做到这一点,但我真的很想做一次。一如既往,感谢您的帮助。

最佳答案

如果您特别想要匹配单词,请尝试这样的操作:

/in[a-z]*ing/i

如果您想要“in”后跟任何字符后跟“ing”,那么:

/in.*ing/i

第二个 / 之后的 i 使其不区分大小写。如果您想在“in”和“ing”之间至少有一个字符,则可以将 * 替换为 +* 匹配零个或多个。

给定一个字符串中的变量,您可以使用正则表达式来测试这样的匹配:

var str = "Interesting";
if (/in[a-z]*ing/i.test(str)) {
// we have a match
}

更新

"What if the prefix and suffix are stored in variables?"

那么你可以使用 new RegExp() 而不是使用上面显示的正则表达式文字并传递表示模式的字符串。

var prefix = "in",
suffix = "ing",
re = new RegExp(prefix + "[a-z]*" + suffix, "i");
if (re.match("Interesting")) {
// we have a match
}

到目前为止,我展示的所有正则表达式都将匹配较大字符串中任何位置的“in”something“ing”模式。如果这个想法是测试整个字符串是否匹配那个重要的使得“有趣”将是一个匹配但“noninterestingstuff”不会(根据 stackunderflow 的评论)那么你需要用 匹配字符串的开头和结尾^$:

/^in[a-z]*ing$/i

或来自变量:

new RegExp("^" + p + "[a-z]*" + s + "$", "i")

或者,如果您要测试整个字符串,则不一定需要正则表达式(尽管我发现正则表达式更简单):

var str = "Interesting",
prefix = "in",
suffix = "ing";
str = str.toLowerCase(); // if case is not important

if (str.indexOf(prefix)===0 && str.endsWith(suffix)){
// match do something
}

或者对于不支持 .endsWith() 的浏览器:

if (str.slice(0,prefix.length)===prefix && str.slice(-suffix.length)===suffix)

"What's the best I can read on the subject?"

MDN简要介绍了 JavaScript 的正则表达式。 regular-expressions.info提供了一组更通用的教程。

关于javascript - 匹配开头和结尾的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169887/

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