如何修改此标签正则表达式以检查第二个字符是a-z还是A-Z?

问题描述 投票:0回答:2

我建立在一个正则表达式的基础上,发现对我的用例来说效果很好。目的是检查我认为有效的主题标签(我知道SO上有很多主题标签regex帖子,但是这个问题是特定的)。

这里是我正在使用的正则表达式

/(^|\B)#(?![0-9_]+\b)([a-zA-Z0-9_]{1,20})(\b|\r)/g

我唯一的问题是我不知道如何检查第二个字符是否为a-z(第一个字符为井号)。我只希望主题标签后的第一个字符是a-z或A-Z。无数字或非字母数字。

非常感谢任何帮助,关于正则表达式,我是一个新手。

javascript regex
2个回答
2
投票

正如我在评论中提到的,您可以将[a-zA-Z0-9_]{1,20}替换为[a-zA-Z][a-zA-Z0-9_]{1,19},以确保第一个字符是字母,然后是1至19个单词字符(字母数字或下划线)。

但是,您的图案中还有其他不必要的部分。看来您所需要的只是这样:

/(?:^|\B)#[a-zA-Z][a-zA-Z0-9_]{1,19}\b/g

Demo

注意:您也可以将[a-zA-Z0-9_]替换为\w


0
投票

下面应该可以。

\w

如果只想接受两个或多个字母标签,则将(^|\B)#(?![0-9_]+\b)([a-zA-Z][a-zA-Z0-9_]{0,19})(\b|\r)更改为{0,19}

您可以测试它{1,19}

© www.soinside.com 2019 - 2024. All rights reserved.