Проверка строкового шаблона Javascript - PullRequest
2 голосов
/ 16 июня 2009

У меня есть строка, и я хочу проверить эту строку, чтобы она не содержала определенные символы, такие как '/' '\' '&' ';' и т.д ... Как я могу проверить все это сразу?

Ответы [ 8 ]

15 голосов
/ 16 июня 2009

Вы можете решить это с помощью регулярных выражений!

mystring = "hello"
yourstring = "bad & string"

validRegEx = /^[^\\\/&]*$/

alert(mystring.match(validRegEx))
alert(yourstring.match(validRegEx))

совпадение с регулярным выражением возвращает строку, если она в порядке, или ноль, если она недействительна!

Объяснение:

  • JavaScript RegEx Литералы разделены как строки, но с косыми чертами (/) вместо кавычек (").
  • Первый и последний символы validRegEx заставляют его совпадать со всей строкой, а не только с частью, карат привязывает ее к началу, а знак доллара - к концу.
  • Часть в скобках ([ и ]) - это класс символов, который соответствует любому символу, если он находится в классе. Первый символ внутри, карат, означает, что класс отрицается, чтобы соответствовать символам, не упомянутым в классе символов. Если бы он был опущен, класс соответствовал бы символам, которые он указывает.
    • Следующие две последовательности, \\ и \/, экранированы обратной косой чертой, потому что обратная косая черта сама по себе была бы escape-последовательностью для чего-то другого, а прямая косая черта могла бы сбить парсер с мысли, что он достиг конца регулярное выражение (точно так же, как экранирование кавычек в строках).
    • Амперсанд (&) не имеет особого значения и не имеет выхода.
  • Оставшийся символ, kleene star , (*) означает, что все предшествующее ему должно совпадать ноль или более раз, так что класс символов будет съедать столько символов, сколько не вперед или обратные косые черты или амперсанды, в том числе ни один, если он не может их найти. Если вы хотите убедиться, что соответствующая строка не пуста, вы можете заменить ее на плюс (+).
5 голосов
/ 16 июня 2009

Я бы использовал регулярные выражения.

См. это руководство от Mozillla.org. Эта статья также дает хорошее введение в регулярные выражения в JavaScript.

3 голосов
/ 16 июня 2009

Здесь - хорошая статья о проверке Javascript. Помните, что вам нужно будет проверить и на стороне сервера. Проверку Javascript можно легко обойти, поэтому ее никогда не следует использовать по соображениям безопасности, таким как предотвращение SQL-инъекций или XSS-атак.

2 голосов
/ 16 июня 2009

Вы можете выучить регулярные выражения, или (возможно, проще, если вы проверяете только один символ за раз), у вас может быть список символов, а затем какая-то функция sanitize для удаления каждого из них. из строки.

var myString = "An /invalid &string;";
var charList = ['/', '\\', '&', ';']; // etc...

function sanitize(input, list) {
    for (char in list) {
        input = input.replace(char, '');
    }
    return input
}

Итак:

sanitize(myString, charList) // returns "An invalid string"
1 голос
/ 16 июня 2009

Вы можете использовать метод теста с регулярными выражениями:

function validString(input){
    return !(/[\\/&;]/.test(input));
}

validString('test;') //false 
0 голосов
/ 16 июня 2009

Поскольку другие ответили, вы можете решить это с помощью регулярного выражения, но не забудьте также проверить значение на стороне сервера. Нет никаких гарантий, что у пользователя активирован JavaScript. Никогда не доверяйте пользовательскому вводу!

0 голосов
/ 16 июня 2009

Возможно, вы могли бы использовать регулярное выражение .

0 голосов
/ 16 июня 2009

Вы можете использовать регулярные выражения. Например, если ваша строка соответствует:

[\\/&;]+

тогда это недействительно. Смотреть на: http://www.regular -expressions.info / javascriptexample.html

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