电话号码匹配的正则表达式?

博客给出了一个正则表达式 r\^1(3[0-9]|5[189]|8[6789])[0-9]{8}$\,可用于匹配特定格式的手机号,体现了正则表达式在数据匹配方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

r"^1(3[0-9]|5[189]|8[6789])[0-9]{8}$"
北京大学oj题目,已提交AC。原题目如下: Description Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or phrase. For example, you can call the University of Waterloo by dialing the memorable TUT-GLOP. Sometimes only part of the number is used to spell a word. When you get back to your hotel tonight you can order a pizza from Gino's by dialing 310-GINO. Another way to make a telephone number memorable is to group the digits in a memorable way. You could order your pizza from Pizza Hut by calling their ``three tens'' number 3-10-10-10. The standard form of a telephone number is seven decimal digits with a hyphen between the third and fourth digits (e.g. 888-1200). The keypad of a phone supplies the mapping of letters to numbers, as follows: A, B, and C map to 2 D, E, and F map to 3 G, H, and I map to 4 J, K, and L map to 5 M, N, and O map to 6 P, R, and S map to 7 T, U, and V map to 8 W, X, and Y map to 9 There is no mapping for Q or Z. Hyphens are not dialed, and can be added and removed as necessary. The standard form of TUT-GLOP is 888-4567, the standard form of 310-GINO is 310-4466, and the standard form of 3-10-10-10 is 310-1010. Two telephone numbers are equivalent if they have the same standard form. (They dial the same number.) Your company is compiling a directory of telephone numbers from local businesses. As part of the quality control process you want to check that no two (or more) businesses in the directory have the same telephone number. Input The input will consist of one case. The first line of the input specifies the number of telephone numbers in the directory (up to 100,000) as a positive integer alone on the line. The remaining lines list the telephone numbers in the directory, with each number alone on a line. Each telephone number consists of a string composed of decimal digits, uppercase letters (excluding Q and Z) and hyphens. Exactly seven of the characters in the string will be digits or letters. Output Generate a line of output for each telephone number that appears more than once in any form. The line should give the telephone number in standard form, followed by a space, followed by the number of times the telephone number appears in the directory. Arrange the output lines by telephone number in ascending lexicographical order. If there are no duplicates in the input print the line: No duplicates. Sample Input 12 4873279 ITS-EASY 888-4567 3-10-10-10 888-GLOP TUT-GLOP 967-11-11 310-GINO F101010 888-1200 -4-8-7-3-2-7-9- 487-3279 Sample Output 310-1010 2 487-3279 4 888-4567 3
### 正则表达式的作用 正则表达式是一种用于描述字符串模式的强大工具,它可以通过特定的字符组合来表示复杂的字符串匹配规则[^4]。它的主要作用在于对文本进行查找、替换、分割以及验证等操作。 #### 使用场景 - **字符串匹配**:可以快速判断某个字符串是否符合指定的模式。 - **数据提取**:从大量文本中提取满足条件的部分内容。 - **输入校验**:常用于表单提交前的数据合法性检查,比如邮箱地址或电话号码格式验证。 - **文本替换**:基于复杂规则批量修改文本中的某些部分。 --- ### JavaScript 中正则表达式的使用方法 在 JavaScript 中,正则表达式既可以作为字面量创建,也可以通过 `RegExp` 构造函数动态生成。以下是常见的两种方式: 1. 字面量形式: ```javascript const regex = /pattern/flags; ``` 2. 构造函数形式: ```javascript const regex = new RegExp('pattern', 'flags'); ``` 其中,`pattern` 是正则表达式的主体,而 `flags` 则是一些可选标志位,常用的有以下几个: - `g`: 表示全局匹配。 - `i`: 表示忽略大小写。 - `m`: 多行模式下匹配。 #### 方法介绍 JavaScript 提供了一些内置的方法支持正则表达式的应用,如下所示: - `.test()`:测试某字符串是否能与当前正则表达式匹配。 ```javascript console.log(/abc/.test("abcdef")); // true ``` - `.match()`:返回一个数组,包含所有匹配项或者 null。 ```javascript console.log("hello world".match(/world/g)); // ["world"] ``` - `.replace()`:按照给定规则替换目标串的内容。 ```javascript console.log("aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx yy zz aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx yy zz".replace(/\b\w{2}\b/g, "XX")); // 将所有的两位字母单词替换成 XX ``` - `.split()`:依据分隔符拆解成子串集合。 ```javascript console.log("a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(/[;,]/)); // 结果为["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] ``` 上述方法均体现了正则表达式强大的功能特性[^2]。 --- ### Shell 脚本中的正则表达式分类 除了编程语言外,在命令行界面 (CLI) 如 Unix/Linux shell 下也广泛运用到了正则表达式技术。具体来说分为两大类——普通正则表达式(Basic Regular Expressions, BRE) 和 扩展正则表达式(Extended Regular Expressions, ERE)[^3]。两者区别体现在元字符集上,默认情况下ERE需要显式启用才能生效。 例如grep默认采用BRE风格;如果想切换到ERE,则需附加参数 `-E` 或者调用 egrep 工具代替 grep 实现相同效果。 --- ### 总结 综上所述,无论是开发环境还是运维领域,熟练掌握并灵活运用正则表达式都是不可或缺的一项技能。它可以极大地提高工作效率,并简化许多繁琐的任务流程[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值