我的应用程序中有一个字段,用户可以在其中输入主题标签。 我想验证他们的条目,并确保他们输入适当的HashTag。 它可以是任何语言, NOT 前面应该带#符号。 我是用JavaScript写的。
以下是好的例子:
以下是不好的例子:
我们有一个仅匹配a-zA-Z0-9的正则表达式,我们需要添加语言支持,所以我们将其更改为忽略空格并忘记忽略特殊字符,所以我在这里。
我看到的其他一些StackOverflow示例但对我不起作用:
[编辑]
答案 0 :(得分:2)
如果您的不允许字符列表是彻底的(!@#$%^&*()=+./,[{]};:'"?><
),那么正则表达式是:
^#?[^\s!@#$%^&*()=+./,\[{\]};:'"?><]+$
这允许可选的前导#
符号:#?
。它不允许使用负字符类的特殊字符。我刚刚将\s
添加到了列表(空格)中,并且还转发了[
和]
。
不幸的是,您无法在JavaScript的正则表达式中使用\p{P}
(Unicode标点符号)等结构,因此如果正则表达式解决方案不是&#39,您基本上必须将字符列入黑名单或采用不同的方法; t足以满足您的需求。
答案 1 :(得分:1)
我不明白为什么这个问题得不到更多票。多种语言的标签检测是一个问题。我能找到的唯一可行的选择是上面的卢卡斯发布的(其他所有选项都不那么好用。)
尽管需要修改:
#[^\s!@#$%^&*()=+.\/,\[{\]};:'"?><]+
这不仅检测字符串的开头,还检测所有主题标签,修复未转义的字符,并删除末尾不必要的$
。