Остальные либо проверяют пространство, но не пробелы, либо имеют отрицание в неправильном месте, чтобы фактически отрицать.
Захари Скотт
\ w ловит также подчеркивания - это не алфавитно-цифровой символ
Тудор Константин
Ага! Я изменю - я не знал этого. Я ожидаю, что он работает по-разному для разных двигателей, но может также дать ОП безопасный ответ.
Люк Снирингер
2
Понижено, потому что это не поймает не латинские символы, ни "специальные" латинские символы.
Дамиан
16
Если вы хотите использовать символы латинского акцентирования (например, à Ñ) как обычные буквы (т.е. избегать их совпадения), вам также необходимо включить соответствующий диапазон Unicode ( \ u00C0- \ u00FF ) в свое регулярное выражение, поэтому будет выглядеть так:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^ отрицает то, что следует
a-zA-Z соответствует заглавным и строчным буквам
\d соответствует цифрам
\s соответствует пустому пространству (если вы хотите сопоставить только пробелы, замените его пробелом)
: соответствует двоеточию
\u00C0-\u00FF соответствует диапазону Unicode для латинских символов с ударением.
в северном направлении Сопоставление диапазона Unicode может не работать для всех механизмов регулярных выражений, но вышеперечисленное, безусловно, работает в Javascript (как показано на этого пера на Codepen).
nb2. Если вас не беспокоит сопоставление подчеркивания, вы можете заменить его a-zA-Z\dна \wсовпадение букв, цифр и подчеркивания.
Этот диапазон содержит некоторые символы, которые не являются буквенно-цифровыми (U + 00D7 и U + 00F7), и исключает множество допустимых символов с ударением из незападных языков, таких как польский, чешский, вьетнамский и т. Д.
Понижено, потому что это не поймает не латинские символы, ни "специальные" латинские символы.
Дамиан
14
Легко проголосовать за ответ, но еще труднее предоставить конструктивную информацию доске, например, как можно поймать нелатинские символы или «специальные» латинские символы? По моим подсчетам, здесь вы проголосовали за 3 ответа по той же причине, и, на мой взгляд, за небольшую поправку. Например, я здесь, чтобы найти регулярное выражение именно для того, что обсуждается в этих ответах. Меня не волнуют наборы символов, которые не будут использоваться в моем приложении. Закон убывающей доходности.
Аарон может быть «незначительным изменением» для гражданина США, но весьма актуален для ... остальной части этой планеты.
Майкл К. Боррегор
4
Никаких буквенно-цифровых символов, пробелов или '_'.
Это единственный ответ, который правильно относится к алфавиту с акцентом на Unicode. К сожалению, не все движки регулярных выражений поддерживают это средство (даже в Python его нет, начиная с 3.8, хотя его движок регулярных выражений якобы основан на PCRE).
tripleee
1
Я удалю Python из ответа, я думал, что проверил это, но, видимо, нет. Спасибо что подметил это.
Это , кажется , повторить принятый ответ с 2011 годом ^и $якорями пределов его , чтобы соответствовать целым строкам и *кванторным средства он также соответствует пустым строкам.
tripleee
0
В JavaScript:
/[^\w_]/g
^отрицание, т.е. выберите что-либо не в следующем наборе
\w любой символ слова (т. е. любой буквенно-цифровой символ плюс знак подчеркивания)
_ отрицание подчеркивания, так как оно считается символом «слово»
Пример использования - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/
Ответы:
источник
\d
и\s
являются расширениями Perl , которые , как правило , не поддерживаются старыми инструментами нравитсяgrep
,sed
,tr
,lex
и т.д.Это должно сделать это:
источник
Если вы хотите использовать символы латинского акцентирования (например, à Ñ) как обычные буквы (т.е. избегать их совпадения), вам также необходимо включить соответствующий диапазон Unicode ( \ u00C0- \ u00FF ) в свое регулярное выражение, поэтому будет выглядеть так:
^
отрицает то, что следуетa-zA-Z
соответствует заглавным и строчным буквам\d
соответствует цифрам\s
соответствует пустому пространству (если вы хотите сопоставить только пробелы, замените его пробелом):
соответствует двоеточию\u00C0-\u00FF
соответствует диапазону Unicode для латинских символов с ударением.в северном направлении Сопоставление диапазона Unicode может не работать для всех механизмов регулярных выражений, но вышеперечисленное, безусловно, работает в Javascript (как показано на этого пера на Codepen).
nb2. Если вас не беспокоит сопоставление подчеркивания, вы можете заменить его
a-zA-Z\d
на\w
совпадение букв, цифр и подчеркивания.источник
Попробуй это:
Пример JavaScript:
Смотрите онлайн пример:
http://jsfiddle.net/vhMy8/
источник
Никаких буквенно-цифровых символов, пробелов или '_'.
источник
Если вы имеете в виду «не буквенно-цифровые символы», попробуйте использовать это:
источник
Это регулярное выражение работает для C # , PCRE и Go, чтобы назвать несколько.
Это не работает для JavaScript на Chrome, как говорит RegexBuddy . Но здесь уже есть пример для этого.
Это основная часть этого:
\p{L}
который представляет собой
\p{L}
или\p{Letter}
любой вид письма с любого языка.Само полное регулярное выражение:
[^\w\d\s:\p{L}]
Пример: https://regex101.com/r/K59PrA/2
источник
Попробуйте добавить это:
Это сработало для меня ... :)
источник
^
и$
якорями пределов его , чтобы соответствовать целым строкам и*
кванторным средства он также соответствует пустым строкам.В JavaScript:
/[^\w_]/g
^
отрицание, т.е. выберите что-либо не в следующем наборе\w
любой символ слова (т. е. любой буквенно-цифровой символ плюс знак подчеркивания)_
отрицание подчеркивания, так как оно считается символом «слово»Пример использования -
const nonAlphaNumericChars = /[^\w_]/g;
источник