JavaScript: игнорирование чувствительности к регистру строк - PullRequest
12 голосов
/ 12 апреля 2010

В JavaScript я пытаюсь использовать ввод пользователя для поиска в моей базе данных. Например, пользовательский ввод - «монстр», а данные моей базы данных - «монстр». Как сделать так, чтобы он совпадал независимо от его корпуса?

Ответы [ 4 ]

23 голосов
/ 12 апреля 2010

Сравнение без учета регистра в строке JavaScript можно выполнить с помощью string.toUpperCase .

if (input.toUpperCase() === "OTHER STRING")
    ....

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

1 голос
/ 27 ноября 2012

Используйте match () вместо search ().

0 голосов
/ 12 апреля 2010

Если вы используете AJAX, то вы используете язык на стороне сервера. Почему бы вам не позволить сценарию на стороне сервера нормализовать данные? Вы даже можете делегировать эту задачу в базу данных, используя соответствующие функции UPPER и LOWER, но по соображениям безопасности нормализация данных должна быть задачей для сценария на стороне сервера.

Вы можете использовать JS для предварительной проверки данных с точки зрения длины и синтаксиса, главным образом для того, чтобы помочь и предотвратить ошибки пользователя, но одна вещь, которую вы никогда не должны делать, это запрашивать необработанные данные JS. Любой может манипулировать JS и запрашивать a' OR 1=1; DROP TABLE users;--, даже если вы проверяете данные.

0 голосов
/ 12 апреля 2010

Вы должны преобразовать строку javascript и условие базы данных where в строку нижнего регистра.

Но я думаю, что базы данных, такие как sql server и mysql, нечувствительны к регистру в терминах строки.

...