js expression.test (string) - непредвиденные результаты - PullRequest
0 голосов
/ 28 апреля 2019

Прошло некоторое время, так как мне нужно было сделать это, и я просто не вижу, в чем проблема - может быть, я просто слишком перегорел прямо сейчас.

var url = '/some-test.php?t=a-t!est&f=&c=4564646&u=4546&ds=45646&de=1254';

if( /^[a-zA-Z0-9\/\-\.\?\=\&]/i.test(url) ) {
    console.log('true');
} else {
    console.log('false');
}

Почему это происходит с't! est' в строке?

Моя цель состоит в том, чтобы убедиться, что строка состоит только из:

a-z
A-Z
0-9
/
-
.
?
=
&
case insensitive

Я просто хочу сделать быструю и простую проверку URL(или что-то еще) перед его использованием ... убедившись, что он состоит только из символов, которые я указал.

1 Ответ

1 голос
/ 28 апреля 2019

Вы соответствуете только одному персонажу из вашего класса персонажей. Как написано, регулярное выражение только совпадает (успешно) с первым / и больше не анализирует. Добавьте + или * в конец класса символов, чтобы сопоставить несколько символов в тестовой строке. Наконец, добавьте $ в конец регулярного выражения, чтобы привязать конец строки и убедиться, что совпадения совпадают со всей строкой.

/^[a-zA-Z0-9\/\-\.\?\=\&]+$/

Или

/^[a-zA-Z0-9\/\-\.\?\=\&]*$/

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