【问题标题】:I need to take an inputted string, take the non-numeric characters out, and then if the string begins with a 1, remove the 1我需要取一个输入的字符串,取出非数字字符,然后如果字符串以 1 开头,则删除 1
【发布时间】:2018-04-11 20:31:08
【问题描述】:
function changeNumber(e) {
var phoneNumber = e.replace(/\D/g, '');
if (phoneNumber.startsWith("1")) {
var finalNumber = phoneNumber.slice(0);
return finalNumber;
} else {
return phoneNumber;
};
};
console.log(changeNumber("+1 (234)-567.8995"));
期望的结果应该是:2345678995,但我得到的是 12345678995。好像它没有通过 if 语句。
【问题讨论】:
标签:
javascript
regex
string
if-statement
【解决方案1】:
您需要从索引1 开始使用String#slice,因为您想省略索引0 处的第一个字符。
phoneNumber.slice(0)
返回字符串的副本,作为变量的赋值,但是
phoneNumber.slice(1)
从索引 1 和所有后续字符返回字符串。
function changeNumber(e) {
var phoneNumber = e.replace(/\D/g, '');
return phoneNumber.startsWith("1")
? phoneNumber.slice(1)
: phoneNumber;
}
console.log(changeNumber("+1 (234)-567.8995"));
【解决方案2】:
做了一个没有条件的更简洁的函数
-
\D 匹配所有非数字字符。
-
^1 如果是字符串中的第一个字符,则匹配 1。
function changeNumber(e) {
return e.replace(/\D/g, '').replace(/^1/g, '');
};
console.log(changeNumber("+1 (234)-567.8995"));