2015-10-13 86 views
1

我有问题在我的Rails应用程序中为hashtag创建正则表达式。 这些话不应该是有效的:正则表达式没有#标签#

'aa#', 'b#b', 'ccc#', '12#', '#33', "asd ef", "aa aa", "33 22", "#aad dd", "!!!# assd", "#aa dd", "dd a#a" 

这些话应该是有效的(话只用一个字和无#:

'super', 'extra', 'bomba', 'slit!!', '[email protected]@b', 'a13b', 'db3a', 'a3' 

我现在的正则表达式:/#\s*/ - 这项工作,但没有自由空间( 'ASD EF' 通过: - /)

+3

开始你真的需要为这个正则表达式?为什么不简单的字符串搜索'#'或空格? –

+1

你能提供你当前的正则表达式吗 – Paddyd

+0

为什么你需要一个正则表达式而不是使用简单的字符串搜索? – Victor

回答

2

试试这个:

^[^\s#']+$ 

将任何其他字符添加到而不是“有效”字符的字符类中。

+0

现在,我的代码:'validates:hashtag,format:{without:/ [^ \ s#'] + /}'有效,但'super'这个字无效:/ – Kam

+1

@Kam我想你或者想要'/[^ \ s#'] + /'(不'不包括:'),但这只是一个猜测 - 我不熟悉该DSL – Bohemian

+0

当我用'aa#'和'asd ef'已验证。它不应该是有效的。 – Kam

0

没有测试过很多,但我会

(\w+(?!#)(?!\s+).)\w+