Получить регулярное выражение слов, начинающееся со знака @ - PullRequest
0 голосов
/ 20 февраля 2020

Все ответы, которые я нашел, дают грубое решение, например это и это (/ \ b @ \ w + \ b / gi) - это не только "@abcdef", но и «abc@abcdf» тоже, но мне нужно регулярное выражение, которое соответствует всем словам, начинающимся со знака «@» и длиной более 6 символов, и не следующие решения дают мне то, что мне нужно

/@\b[a-zA-Z0-9]{5,}\b/gi
/\b@[a-zA-Z0-9]{5,}\b/gi

Примеры, которые должны быть сопоставлены:

@abcdefjh

Примеры, которые не должны совпадать:

abc@absdefgh

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

Ответы [ 3 ]

1 голос
/ 20 февраля 2020

Вам нужно \B перед @, а не \b - \b находится в конце слова

  • \b Соответствует в позиции, которая следует символом слова, но перед ним не стоит символ слова, или которому предшествует символ слова, но за которым не следует символ слова.
  • \B Соответствует позиции, которая предшествует символу слова, за которым следует символ слова или за которым не предшествует и за которым не следует символ слова.

Всего более 6, используйте ,5, если 6, включая @, в порядке

\B@[a-zA-Z0-9]{6,}\b

https://regex101.com/r/QcLNw6/3

1 голос
/ 20 февраля 2020

var test = [
    '@abcdefjh',
    '@abc',
    'abc@absdefgh',
    '#*$@abc123',
    'abc123',
];
console.log(test.map(function (a) {
  return a + ' :' + /(?:\s|^)@[a-zA-Z0-9]{5,}/.test(a);
}));

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

/(?<!\S)@[a-zA-Z0-9]{5,}/
0 голосов
/ 20 февраля 2020

Это регулярное выражение будет соответствовать слову (состоящему из символов слова, как в регулярных выражениях) , которому предшествует '@' и которое состоит из более чем 6 символов .

@\w{6,}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...