2012-03-02 3 views
0

Я ищу регулярное выражение в JS, чтобы соответствовать строка не начинается с # противоположность этой функцииСоответствие регулярному выражению javascript^[^ #]?

String.prototype.parseHashtag = function() { 
     return this.match(/[#]+[A-Za-z0-9-_]+/g); 
    } 

    t="#lorem #ipsum yes no"; 
    console.log(t.parseHashtag()); // ["#lorem", "#ipsum"] 

Я нашел этот Regex: Finding strings that doesn't start with X

но регулярное выражение не работает/([^#] | ^) [az]/или, может быть, я устал ... Я делаю замену(), но очень любопытно понять, как это сделать в match()!

Вот ЯШ: http://jsfiddle.net/d8HVU/1/

+0

Что именно ваш вопрос? Какое регулярное выражение не работает? – jfriend00

ответ

1

Я пробовал это и хорошо работает для Javascript на вашем примере ввода. Я надеюсь, что это тоже нормально для других ресурсов. Испытайте это хорошо. Другие ответы не были разработаны в Javascript.

String.prototype.parseHashtag = function() { 
    return this.match(/(\s|^)[^#][\w\d-_]+\b/g); 
} 

t="#lorem #ipsum yes no"; 
alert(t.parseHashtag()); 
+0

+1 Вероятно, вы правы, и это соответствует лучшему, что хочет OP. 2 мелочи, это будет соответствовать пробелу перед словом (я думаю, нет шансов избежать этого, потому что Javascript не поддерживает lookbehinds), во-вторых, нет необходимости в '\ d' в charclass, его включается в' \ w'. – stema

+0

О, и важный момент: избегайте тире в классе символов или переместите его в конец, он определяет диапазон символов (может быть, не нужен, потому что before является предопределенным классом, '\ d'). – stema

+0

(\ s | ^) Мне нужно изучить регулярное выражение ... ^ для начала или «нет», когда он находится в []? но не знаю, когда сингл с | (это OR?) ... regex - новый судоку для webdev ... –

0

Если я пытался соответствовать последней хэш-тег и все символы, которые последуют за ним, я хотел бы использовать это регулярное выражение:

/#[^#]*$/ 

Работа демо: http://jsfiddle.net/jfriend00/nE2bM/

Если вы пытаетесь сделать что-то другое, уточните, что именно вы просите.

0

Вы можете использовать отрицательный предпросмотр для этого

^(?!#).* 

Посмотреть here on Regexr

Это соответствует каждая строка, которая не начинается с символа «#».

ОК, я не уверен, вы хотите совместить начало строки или «слово», которое не начинается с «#»?

Смежные вопросы