gpt4 book ai didi

javascript - JS 正则表达式 - 检查电话号码中的非数字字符

转载 作者:行者123 更新时间:2023-11-28 00:58:54 25 4
gpt4 key购买 nike

在此代码中,我想检查非数字字符

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<script>
function test(phone) {
console.log("original", phone)
var ph = phone + ""; //Copy
//remove spaces using regex
ph = ph.replace(/\n/g, ""); //\n line
ph = ph.replace(/\s/g, ""); //\s space
console.log("removed", ph);

//Check for non-numeric chars
if (ph.indexOf(/\D/g) !== -1) return 1;
console.log("replace", ph.replace(/\D/g, ""))
console.log("find", ph.indexOf(/\D/g))
if (phone.length < 7) return false;
return true;
}

console.log("result", test("hi\n345bla345"))
</script>

</body>

</html>

控制台这样说

original hi
345bla345 test.html:12
removed hi345bla345 test.html:17
replace 345345 test.html:21
find -1 test.html:22
result true

为什么替换它可以工作,但是当尝试查找非数字字符的索引时,它不起作用?

最佳答案

发生这种情况是因为 .indexOf 方法检查是否存在与其参数相等的元素。因此,如果您调用 .indexOf(/abc/) ,它将检查您的字符串是否在某个索引处包含正则表达式 /abc/ ,这显然永远不会成立,因为您的字符串仅包含字符。

如果你想找到第一个数字的索引,你必须使用这样的 for 语句:

var s = "ab123cd",
i;
for (i=0; i<s.length; i++) {
if (/\D/.test(s[i])) break;
}

console.log(i) // 2

关于javascript - JS 正则表达式 - 检查电话号码中的非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25883442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com