我需要获取一个输入的字符串,取出非数字字符,然后如果字符串以 1 开头,请删除 1


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 语句运行一样。

你需要使用从索引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"));

做了一个更简洁的函数,没有条件

  • D匹配所有非数字字符。
  • 如果 ^1 是字符串中的第一个字符,则匹配 1。

function changeNumber(e) {
  return e.replace(/D/g, '').replace(/^1/g, '');
};
console.log(changeNumber("+1 (234)-567.8995"));

最新更新