因此,挑战在于我们正在尝试检测字符串是否与固定电话号码模式匹配,这是一个简单的字符串模式.
模式是:
ddd-ddd-dddd
Run Code Online (Sandbox Code Playgroud)
其中"d"代表十进制数字而减号代表自身," - "
当前用于测试的模式是,但如果感觉没有足够的模式来揭穿错误的格式,则可以增加.
"012-345-6789"
"0124-345-6789"
"012-3456-6789"
"012-345-67890"
"01a-345-6789"
"012-34B-6789"
"012-345-678C"
"012"
Run Code Online (Sandbox Code Playgroud)
我们的目标,我所寻求的答案,是找到执行以最快的速度返回的方法boolean
,其中true
意味着模式是好的,false
意味着该模式是不好的.
这是我目前的解决方案
function matchesPattern(pattern) {
if (pattern.length !== 12) {
return false;
}
var i = 0,
code;
while (i < 12) {
code = pattern.charCodeAt(i);
if (i > 8 || i % 4 !== 3) {
if (code < 48 || code > 57) {
return false;
}
} else if (code !== 45) {
return false;
} …
Run Code Online (Sandbox Code Playgroud)