我需要正则表达式来验证hashtag。每个hashtag应该以hashtag("#")开头。
有效投入:
1. #hashtag_abc
2. #simpleHashtag
3. #hashtag123
无效输入:
1. #hashtag#
2. #hashtag@hashtag
我一直在尝试这个regex /#[a-zA-z0-9]/,但是它也接受无效的输入。
对怎么做有什么建议吗?
发布于 2017-02-06 10:48:47
回答当前的问题.
有两个问题:
[A-z] 允许的不仅仅是字母字符 ([, , ], ^, _, ` )由于您正在验证整个字符串,因此还需要锚点(^和$)来确保字符串完全匹配:
/^#\w+$/见regex演示。
如果您想从较长的文本中提取特定的有效哈希标签.
这是一个额外的部分,因为很多人都希望提取(而不是验证)哈希标签,下面是一些解决方案。请记住,\w中的JavaScript (和许多其他正则表达式库)等于[a-zA-Z0-9_]
#\w{1,30}\b -一个#字符,后面跟着一个到30个单词字符,后面跟着一个单词边界。\B#\w{1,30}\b -一个#字符,它要么位于字符串的开头,要么紧跟在一个非单词字符之后,然后是1到30个单词(即字母、数字或下划线)字符,后面跟着1到30个单词字符和一个单词边界。\B#(?![\d_]+\b)(\w{1,30})\b - #,在字符串的开头或者在一个非单词字符之后,然后一个字到30个字(即字母、数字或下划线)字符(不能仅仅是数字/下划线)后面跟着一个单词边界。最后但并非最不重要的是,这里有一个Twitter标签regex来自https://github.com/twitter/twitter-text/tree/master/js..。对不起,太长了不能粘贴在这样的帖子里,这里是:https://gist.github.com/stribizhev/715ee1ee2dc1439ffd464d81d22f80d1。
发布于 2017-03-02 09:43:53
目前已被接受的答案在以下几个地方失败:
尝试以下正则表达式:
/(^|\B)#(?![0-9_]+\b)([a-zA-Z0-9_]{1,30})(\b|\r)/g它将关闭上述边缘情况,而且:
这是一个链接到演示。
发布于 2021-03-07 15:14:41
你可以试试这个:/#[a-zA-Z0-9_]+/
这将只包括字母,数字和下划线。
https://stackoverflow.com/questions/42065872
复制相似问题