2017-02-06 71 views
1

我需要正则表达式来验证hashtag。每个hashtag应以hashtag(“#”)开头。正则表达式的有效hashtag

有效的输入:

1. #hashtag_abc

2. #simpleHashtag

3. #hashtag123

无效输入:

1. #hashtag#

2. #[email protected]

我一直在尝试使用这个正则表达式/#[a-zA-z0-9]/,但它也接受无效输入。

有关如何操作的建议?

回答

1

有2个问题:

您可能还需要锚(^/$)如果你想有一个完整的字符串匹配。

使用

/^#\w+$/ 

regex demo

+0

您的当前表达式与OP的第一个有效输入不匹配,因为它包含下划线。 – Niitaku

+1

@Niitaku:是的,你说得对,那么模式应该简单得多。 –

+0

@WiktorStribiżew这里有一个更有效的输入'#hashtag123' – Ashok

1

目前接受的答案失败,在几个地方:

  • 它可以接受一个在他们没有字母(即“#11111”,“#___”两通)井号标签。
  • 它将排除用空格分隔的标签(“hey there #friend”不匹配“#friend”)。
  • 它不允许您在标签上放置最小/最大长度。
  • 如果您决定将其他符号/字符添加到有效输入列表中,它不会提供很大的灵活性。

尝试以下正则表达式:

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

它会关闭上述边缘情况,进而:

  • 您可以更改{1,30}到你想要的最小/最大
  • 您可以将其他符号添加[0-9_]和[A-ZA-Z0-9_]块,如果你想以后

这里是link to the demo