Как использовать regEx для возврата false, когда данные не находятся в диапазоне? - PullRequest
0 голосов
/ 03 декабря 2009

Пример данных: Здравствуйте, я 301

Мне нужно регулярное выражение, чтобы разрешить A-Z a-z 0-9 и только пробелы.

Все остальные символы не допускаются. Если обнаружено, верните false в javascript.

Исходя из приведенных выше примеров данных, он должен вернуть false, потому что получил символ, который не может быть принят ===> '

Как написать это в js.

Ответы [ 6 ]

3 голосов
/ 03 декабря 2009

Я предлагаю регулярное выражение:

/^[A-Z0-9 ]+$/i.test(someinput);

Это гарантирует, что входные данные ТОЛЬКО состоят из символов, упомянутых в регулярном выражении, путем «привязки» регулярного выражения от начала строки (обозначенного «^») до конца строки («$»). Конечный символ "/ i" в регулярном выражении делает его нечувствительным к регистру соответствий, освобождая спецификацию обоих регистров букв.

2 голосов
/ 03 декабря 2009

Любая строка в Javascript имеет функцию match(), которая принимает регулярное выражение и возвращает null, если она не совпадает. Например, если у вас есть:

var s = "Hello I'm 301";

Вы можете проверить это с помощью:

if (s.match(/^[a-z0-9\s]*$/i))
 alert("string is ok!");
else
 alert("string is bad!");

На регулярное выражение: /^[a-z0-9\s]*$/i

Каретка (^) в начале и доллар ($) в конце являются якорями. Они означают «начало строки» и «конец строки». Они заставляют регулярное выражение покрывать всю строку, а не только ее части. Квадратные скобки определяют диапазон символов: буквы и цифры, а также пробел.

Без каретки и доллара (якорей) ваше регулярное выражение соответствовало бы любому действительному символу и вернуло бы значение true.

Последний "i" является параметром регулярного выражения, что означает «без учета регистра».

Надеюсь, это поможет!

1 голос
/ 03 декабря 2009

Попробуйте это

function check(s){
    return /^[A-Za-z0-9 ]+$/.test(s);
}
1 голос
/ 03 декабря 2009

Возможно, вы захотите использовать: /[A-Za-z0-9 ]*/.test(someInputString)

- изменить: как отмечено в комментариях и других ответах, регулярное выражение должно быть /^[A-Za-z0-9 ]*$/

0 голосов
/ 03 декабря 2009

Попробуйте это:

    var x = 'Hello I\'m 301';
    var z = x.match(/^[A-Za-z0-9\s]+$/g);
    alert(z);
    x = 'Hello Im 301';
    var y = x.match(/^[A-Za-z0-9\s]+$/g);
    alert(y); 

Не забудьте убрать одинарную кавычку в тестовой строке:)

Вы можете вернуть истину / ложь, проверив наличие нуля после совпадения с регулярным выражением, если образец строки не соответствует совпадению, то результат будет нулевым.

0 голосов
/ 03 декабря 2009

Сначала необходимо создать объект Javascript Regex.

var MyRegex = new RegExp(/^[a-zA-Z0-9\s]+$/)

или просто

var MyRegex = /^[a-zA-Z0-9\s]+$/

Затем вы можете использовать это для проверки, которая вернет логическое значение

var MyString = "Hello I'm 301"
if (MyRegex.test (MyString)) 
{
    // Would be true here
}
else
{
    // Would be false here
    // Would fall through to here due to '
}

Полагаю, вы тоже можете сделать /^[a-zA-Z0-9\s]+$/.text(MyString)

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