Regex 正则表达式用于匹配元音不在不和谐表情符号中的单词

Regex 正则表达式用于匹配元音不在不和谐表情符号中的单词,regex,regex-lookarounds,regex-group,regex-negation,Regex,Regex Lookarounds,Regex Group,Regex Negation,我正在制作一个discord机器人,它可以删除所有包含元音的邮件(我知道这很奇怪,但这只是我和朋友之间的一个玩笑)。我检查消息是否有元音的方法是使用正则表达式,我试图改进我的正则表达式,使其允许使用表情符号(它们的名称可能包含元音) 我需要正则表达式来匹配任何包含元音的字符串,比如: “示例”//应匹配 除非它不能匹配这样的字符串(这是我的机器人看到表情的方式),不管它是否有元音。比如: “”//不应匹配 将任何单词与其中的元音匹配都很容易: /\w*[aeiou]\w*/gi 或者匹配任

我正在制作一个discord机器人,它可以删除所有包含元音的邮件(我知道这很奇怪,但这只是我和朋友之间的一个玩笑)。我检查消息是否有元音的方法是使用正则表达式,我试图改进我的正则表达式,使其允许使用表情符号(它们的名称可能包含元音)

我需要正则表达式来匹配任何包含元音的字符串,比如:

“示例”//应匹配
除非它不能匹配这样的字符串(这是我的机器人看到表情的方式),不管它是否有元音。比如:

“”//不应匹配
将任何单词与其中的元音匹配都很容易:

/\w*[aeiou]\w*/gi
或者匹配任何表情符号都很容易:

//gi

但我一直在摆弄积极和消极的前瞻/落后,试图把这两个合并起来,大约有一个小时,但似乎无法解决这个问题。如果你知道我需要在这里做什么,请帮助我

如果您只是确保单词前面有空格(或行首),会怎么样

(?:^ |\s)\w*?[aeiou]\w*

与测试总是在表情符号中的东西不同,你可以测试从未在表情符号中出现的东西


如果您只是确保单词前面有空格(或行首),会怎么样

(?:^ |\s)\w*?[aeiou]\w*

与测试总是在表情符号中的东西不同,你可以测试从未在表情符号中出现的东西


假设您使用的是支持lookarounds的regex方言,请检查单词前面是否紧跟着


尾随的
\w*
在这里是不必要的,但我保留了它,以防您出于某种原因想要匹配整个单词。

假设您使用的是支持lookarounds的regex方言,请检查单词前面是否没有紧跟


尾随的
\w*
在这里是不必要的,但是我把它留了下来,以防您出于某种原因想匹配整个单词。

注意,这对引用的句子或类似的句子不起作用,但它回答了问题。如果您有一组更健壮的测试用例,请将它们添加到问题中,我会看一看。谢谢您的帮助,我确实需要它在更多的情况下工作,所以我将它们放在一起,以显示所有的案例。顺便说一句,我不确定这是否可以在单个正则表达式中实现;看起来它可能需要可变宽度的lookarounds才能工作(我正在使用的regex实现不支持这一点)。请注意,这对引用的句子或类似的东西不起作用,但它回答了问题。如果您有一组更健壮的测试用例,请将它们添加到问题中,我会看一看。谢谢您的帮助,我确实需要它在更多的情况下工作,所以我将它们放在一起,以显示所有的案例。顺便说一句,我不确定这是否可以在单个正则表达式中实现;似乎它可能需要可变宽度的lookarounds才能工作(我正在使用的regex实现不支持这一点)。。。看看这个。看来“回头客”并没有抓住整个团队的注意力。知道这是怎么回事吗?试着在
\w*
之前添加
\b
。我更新了答案。太棒了!谢谢你。如果你不介意的话,你能帮我扩展它,同时排除链接吗?正如您的链接所示,问题在于初始链接文本(.net)之后的文本匹配。我不认为有一种简单的方法可以只匹配不属于链接一部分的文本,而不提供关于精确边界条件的更多信息。从编程角度来说,最简单的方法可能是分别跳过链接,然后对照上面的正则表达式进行检查。。。看看这个。看来“回头客”并没有抓住整个团队的注意力。知道这是怎么回事吗?试着在
\w*
之前添加
\b
。我更新了答案。太棒了!谢谢你。如果你不介意的话,你能帮我扩展它,同时排除链接吗?正如您的链接所示,问题在于初始链接文本(.net)之后的文本匹配。我不认为有一种简单的方法可以只匹配不属于链接一部分的文本,而不提供关于精确边界条件的更多信息。在编程上,最简单的方法可能是分别跳过链接,然后对照上面的正则表达式进行检查。
/(?<!<:)\b\w*[aeiou]\w*/gi