#javascript #regex
#javascript #регулярное выражение
Вопрос:
У меня есть строка скрипта, которая :
#type1 this is the text of the note
Я пробовал это, но для меня это не сработало :
^#([^s] )
type
Другими словами, я пытаюсь уловить, что находится между хэш-знаком «#» и следующим пробелом, исключая хэш-знак «#», а строка, которую я хочу перехватить, является буквенно-цифровой строкой.
Комментарии:
1. Хорошо, и где ваша попытка? Мы можем помочь вам исправить это, но мы не собираемся писать это за вас (если вы не наймете нас ;))
2. @NiettheDarkAbsol Я одобрил попытку, которую я предпринял
3. Почему ожидаемый вывод
type
и неtype1
учитывая, что вы хотите захватить все между#
и следующим пробелом? Ваш код должен работать так, как он есть: regex101.com/r/uxfyFN/1
Ответ №1:
С помощью функций регулярных выражений, предоставляемых Javascript:
exec_result = /#(w*)/.exec('#whatever string comes here');
Я считаю exec_result[1]
, что это должна быть нужная вам строка.
Возвращаемое значение exec()
метода можно найти здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
Ответ №2:
Вы действительно близки:
/^#(w )s/
w соответствует любым буквам или цифрам (и подчеркиванию тоже). И пробел должен быть вне соответствующей группы, так как я предполагаю, что вы не хотите его захватывать.
Ответ №3:
Чтобы получить буквенно-цифровое совпадение (которое даст вам type1), вместо отрицаемого класса символов [^s]
, который не соответствует символу пробела, вы можете использовать класс символов и указать, что вы хотите сопоставить [A-Za-z0-9]
.
Затем используйте отрицательный прогноз, чтобы утверждать, что то, что справа, не является символом без пробелов:
^#([A-Za-z0-9] )(?!S)
Демонстрация регулярных выражений
Ваше совпадение находится в первой группе захвата. Обратите внимание, что вам не нужно экранировать #
Например, с использованием флага без учета регистра /i
const regex = /^#([A-Za-z0-9] )(?!S)/i;
const str = `#type1 this is the text of the note`;
console.log(str.match(regex)[1]);
Если вы хотите только сопоставить тип, вы можете использовать:
^#([a-z] )[a-z0-9]*(?!S)
Демонстрация регулярных выражений
const regex = /^#([a-z] )[a-z0-9]*(?!S)/i;
const str = `#type1 this is the text of the note`;
console.log(str.match(regex)[1]);
Ответ №4:
Я понял это.
/^#([^s] ) (.*)$/