用TypeScript 将4563476128格式化 (456) 347-6128并且验证格式是否正确
时间: 2024-03-12 13:49:38 浏览: 19
以下是使用 TypeScript 将美国电话号码格式化为 `(xxx) xxx-xxxx` 格式并验证其格式是否正确的代码示例:
```typescript
function formatUSPhoneNumber(phoneNumber: string): string | null {
const regex = /^(\d{3})(\d{3})(\d{4})$/;
const match = phoneNumber.match(regex);
if (match) {
return `(${match[1]}) ${match[2]}-${match[3]}`;
} else {
return null;
}
}
function validateUSPhoneNumber(phoneNumber: string): boolean {
const regex = /^\(\d{3}\) \d{3}-\d{4}$/;
return regex.test(phoneNumber);
}
const phoneNumber = "4563476128";
const formattedPhoneNumber = formatUSPhoneNumber(phoneNumber);
if (formattedPhoneNumber) {
console.log(`The formatted phone number is ${formattedPhoneNumber}.`);
const isValidPhoneNumber = validateUSPhoneNumber(formattedPhoneNumber);
if (isValidPhoneNumber) {
console.log("The phone number is valid.");
} else {
console.log("The phone number is not valid.");
}
} else {
console.log("The phone number cannot be formatted.");
}
```
解释一下:
- `formatUSPhoneNumber` 函数接受一个字符串参数 `phoneNumber`,返回格式为 `(xxx) xxx-xxxx` 的美国电话号码,如果无法格式化,则返回 `null`。
- 正则表达式 `^(\d{3})(\d{3})(\d{4})$` 匹配一个十位数字的电话号码,其中:
- `^` 表示字符串的开始。
- `(\d{3})` 表示一个三位数字的组。
- `(\d{3})` 表示另一个三位数字的组。
- `(\d{4})` 表示一个四位数字的组。
- `$` 表示字符串的结尾。
- 如果 `phoneNumber` 符合正则表达式的格式,则使用 `match` 方法将其分成三个组,并返回格式为 `(xxx) xxx-xxxx` 的电话号码。
- 如果 `phoneNumber` 不符合正则表达式的格式,则返回 `null`。
- `validateUSPhoneNumber` 函数接受一个字符串参数 `phoneNumber`,返回一个布尔值,表示该电话号码是否为格式为 `(xxx) xxx-xxxx` 的美国手机号。
- 正则表达式 `^\(\d{3}\) \d{3}-\d{4}$` 匹配格式为 `(xxx) xxx-xxxx` 的美国手机号,其中:
- `^` 表示字符串的开始。
- `\(` 表示左括号。
- `\d{3}` 表示三个数字。
- `\)` 表示右括号。
- ` ` 表示一个空格。
- `\d{3}` 表示另三个数字。
- `-` 表示一个连字符。
- `\d{4}` 表示四个数字。
- `$` 表示字符串的结尾。
- 最后,我们将一个电话号码传递给 `formatUSPhoneNumber` 函数,格式化电话号码并验证其格式是否正确。如果电话号码格式正确,则输出格式化后的电话号码和验证消息;否则,输出格式化消息或验证消息。