2015-10-13 2 views
1

У меня проблема с созданием regex для hashtag в моем приложении Rails. Эти слова не должны быть действительными:RegEx для 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 эф' прошли: - /)

+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+ 
Смежные вопросы