RegEx для соответствия "A-Z, a-z, 0-9, _" и "." - PullRequest
26 голосов
/ 12 ноября 2009

Мне нужно регулярное выражение, которое позволит вводить только A-Z, a-z, 0-9, символ _ и точку (.).

Я пытался:

[A-Za-z0-9_.] 

Но это не сработало. Как я могу это исправить?

Ответы [ 5 ]

53 голосов
/ 12 ноября 2009
^[A-Za-z0-9_.]+$

От начала до конца строки, сопоставьте один или несколько из этих символов.

Edit:

Обратите внимание, что ^ и $ соответствуют началу и концу строки . Когда многострочный режим включен, это может означать, что одна строка соответствует, но не полная строка.

Используйте \A для начала строки и \z для конца.

См. Например: http://msdn.microsoft.com/en-us/library/h5181w5w(v=vs.110).aspx

5 голосов
/ 12 ноября 2009

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

[^A-Za-z0-9_.]

И используйте это в совпадении в вашем коде, что-то вроде:

if ( /[^A-Za-z0-9_.]/.match( your_input_string ) ) {
   alert( "you have entered invalid data" );
}

Как это?

0 голосов
/ 14 мая 2019

Вы можете просто использовать ^[\w.]+ для соответствия A-Z, a-z, 0-9 и _

0 голосов
/ 29 апреля 2019

регулярное выражение: /^[a-zA-Z0-9_.]$/i

Это работает

0 голосов
/ 12 ноября 2009

Может быть, вам нужно более точно указать, что не сработало и в какой среде вы находитесь.

Что касается утверждения о том, что точка является особенной в классе charackter, то это не так в каждой среде программирования. Например, следующий скрипт на Perl

use warnings;
use strict;

my $str = '!!!.###';
$str =~ s/[A-Za-z_.]/X/g;
print "$str\n";

производит

!!!X###
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...