正则表达式匹配元音不在不和谐表情符号中的单词
Regex to match words which have vowels which are not in a discord emoji
我正在制作一个 discord 机器人,它会删除所有包含元音的消息(我知道这很奇怪,但这只是我和朋友之间的一个玩笑)。我检查消息是否有元音的方法是使用正则表达式,我正在尝试改进我的正则表达式,以便它允许表情符号(它们的名称可能包含元音)。
我需要正则表达式做的是匹配其中包含元音的任何字符串,例如:
"example" //should match
除了它不能匹配这样的字符串(这是我的机器人看到表情符号的方式),不管它是否有元音。类似于:
"<:example:760518199699308544>" //shouldnt match
匹配其中包含元音的任何单词很容易:
/\w*[aeiou]\w*/gi
或者匹配任何表情符号很容易:
/<:\w*:\d{18}>/gi
但我一直在弄乱正负 lookahead/lookbehind 试图将这两者合并大约一个小时,但似乎无法解决。如果你知道我在这里需要做什么,请帮忙!
如果您只是确保单词前面有空格(或行首)怎么办?
(?:^|\s)\w*?[aeiou]\w*
与测试表情符号中始终存在的内容相反,您可以测试其中从未包含的内容。
假设您使用的是支持环视的正则表达式方言,请检查该词前面是否没有紧跟 <:
/(?<!<:)\b\w*[aeiou]\w*/gi
尾随的 \w*
在这里是不必要的,但我保留了它,以防您出于某种原因想要匹配整个单词。
我正在制作一个 discord 机器人,它会删除所有包含元音的消息(我知道这很奇怪,但这只是我和朋友之间的一个玩笑)。我检查消息是否有元音的方法是使用正则表达式,我正在尝试改进我的正则表达式,以便它允许表情符号(它们的名称可能包含元音)。
我需要正则表达式做的是匹配其中包含元音的任何字符串,例如:
"example" //should match
除了它不能匹配这样的字符串(这是我的机器人看到表情符号的方式),不管它是否有元音。类似于:
"<:example:760518199699308544>" //shouldnt match
匹配其中包含元音的任何单词很容易:
/\w*[aeiou]\w*/gi
或者匹配任何表情符号很容易:
/<:\w*:\d{18}>/gi
但我一直在弄乱正负 lookahead/lookbehind 试图将这两者合并大约一个小时,但似乎无法解决。如果你知道我在这里需要做什么,请帮忙!
如果您只是确保单词前面有空格(或行首)怎么办?
(?:^|\s)\w*?[aeiou]\w*
与测试表情符号中始终存在的内容相反,您可以测试其中从未包含的内容。
假设您使用的是支持环视的正则表达式方言,请检查该词前面是否没有紧跟 <:
/(?<!<:)\b\w*[aeiou]\w*/gi
尾随的 \w*
在这里是不必要的,但我保留了它,以防您出于某种原因想要匹配整个单词。