如何在js中删除电子邮件的大小写敏感度

How to remove case sensitivity from email in js

我想在搜索电子邮件时删除电子邮件的区分大小写。 为了进一步解释,如果我以不同的方式搜索电子邮件 (dmc@gmail.com),例如 'DMC@gmail.com''dMc@gmail.com''Dmc@gmail.com'。我想取回电子邮件。如果有人能帮忙,真的很感激。

谢谢

只需在 js 中使用 toLowerCase() 即可。

let text0 = "abc@gmail.com";
let text1 = "aBc@gmail.com";
let text2 = "ABC@gmail.com";

text0 = text0.toLowerCase();
text1 = text1.toLowerCase();
text2 = text2.toLowerCase();


console.log(text0, text1, text2)

为了实现您可以从搜索输入中获取文本值并在执行搜索之前将其转换为小写,您可以在 JS 中使用方法 [yourText].toLowerCase()

示例:

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript String to lowercase</h1>

<input id="your-input" type="text">

<button onclick="convertText()">To lowercase!</button>

<p id="demo"></p>

<script>
function convertText() {
let text = document.getElementById("your-input").value;
document.getElementById("demo").innerHTML = text.toLowerCase();    
}

</script>

</body>
</html>

检查这个例子

<input id="text_inp" type="text" />
<script>
document.getElementById('text_inp').oninput = function () {
  this.value = this.value.toLowerCase();
};
</script>

正如评论中所指出的,这个邮件查找操作实际上是通过查询Oracle数据库来完成的。

在这种情况下,我建议调查是否可以执行包含不区分大小写的 WHERE 子句的查询以在 Email 列上进行过滤。我不是 oracle 数据库专家,但通常数据库系统允许使用适当的排序规则执行不区分大小写的查询。至少检查一下这是否真的被允许是值得的。

这样做您将获得以下好处:

  • 实际计算是在数据库上完成的,所以你基本上避免了应用程序级别的计算。数据库针对此类工作进行了高度优化,可以利用索引来加快过滤速度
  • 您将在网络上移动较少的数据,因为只有真正符合您的过滤条件的记录才会通过网络传输到计算机运行您的应用程序

如果 运行 您的数据库不支持不区分大小写的查询,您可以考虑的另一个选项是以规范化形式存储电子邮件。您可以保存实际的电子邮件值(使用原始大小写)和电子邮件的规范化版本(例如,您可以使用转换为大写的电子邮件值)。然后,要执行不区分大小写的搜索,您可以在 WHERE 子句中使用包含规范化电子邮件值的列。 我建议在万不得已的情况下使用此方法,因为您会增加存储的数据量并且会使查询不那么明显:这只是在不区分大小写时应用的解决方法无法查询。