正则

用于电话号码验证的综合正则表达式

流过昼夜 提交于 2019-12-15 21:23:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我正在尝试综合使用正则表达式来验证电话号码。 理想情况下,它将处理国际格式,但必须处理美国格式,包括以下内容: 1-234-567-8901 1-234-567-8901 x1234 1-234-567-8901 ext1234 1(234)567-8901 1.234.567.8901 1/234/567/8901 12345678901 我会以目前的尝试回答,但我希望有人能做得更好和/或更优雅。 #1楼 这是在JavaScript中效果很好的一种。 它在字符串中,因为这就是Dojo小部件所期望的。 它与带有可选扩展名的10位北美NANP号匹配。 空格,破折号和句点是可接受的定界符。 "^(\\(?\\d\\d\\d\\)?)( |-|\\.)?\\d\\d\\d( |-|\\.)?\\d{4,4}(( |-|\\.)?[ext\\.]+ ?\\d+)?$" #2楼 我一直在同一个问题上挣扎,试图使我的应用程序成为未来的证明,但是这些家伙让我朝着正确的方向前进。 我实际上不是在检查数字本身是否有用,我只是在尝试确保输入的一系列数字可能有扩展名,也可能没有扩展名。 最糟糕的情况是,如果用户不得不从XML文件中提取未格式化的号码,那么他们仍然只会在电话的数字键盘 012345678x5 键入数字

从零开始学正则(二)

倾然丶 夕夏残阳落幕 提交于 2019-12-15 20:45:17
壹 ❀ 引 我在从零开始学正则(一)这篇文章中介绍了正则横向模糊与纵向模糊匹配模式,以及常用的字符组与量词,掌握了这些其实已经算正则入门了。在文尾留下了两个正则问题, 请写出匹配24小时制时间与16进制颜色的正则 ,在学习第二章之前我们先搞定这两个问题。 24小时制时间格式一般是09:30这样,小时的第一位数字可能是[0-2]三种情况之一,当为0,1时,第二位数字可以是[0-9]任意数字,当为2时第二位数字只能是0-3之间的数字。第三位数字只能是0-5之间的数字,最后一位数字只能是0-9之间。 我们只用对于小时的两种情况做个分支,所以正则可以写成这样: var regex = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/; regex.test("00:07"); //true regex.test("23:59"); //true 注意,匹配小时的分支我们使用了一对圆括号包裹,表示这是一个组,而组内包含了两个分支情况,如果不加圆括号正则解析时会将管道符 | 左右两侧理解成两个分支,如下图,很明显这不是我们想要的规则: 其次,在正则内部开头和结尾我们分别使用了 ^$ 两个符号,这表示正则匹配时严格以字符串开头和结尾中间的内容为匹配对象,如果不加效果就是这样: var regex = /([01][0-9]|[2][0-3]):[0-5][0-9]/;

shell正则,sed awk应用

筅森魡賤 提交于 2019-12-15 09:12:20
正则表达式 基本正则 ^ $ [ ] [^] . * {n,m} {n,} (ro){2} () 扩展正则 egrep grep -E ? {n,m} | () \b athey \bthe\b 前置指令 | sed 选项 定址符 指令 sed 选项 定址符 指令 文件 逐行执行 -n -r -i / /p / /d / /s/// a 在行下面追加 i 在行上面添加 c替换整行 sed ‘a 666’ user //所有行下面追加666 sed ‘1a 666’ user //第1行下面追加666 sed ‘/bash$/a 666’ user //以bash结尾的行下面追加666 sed ‘i 666’ user //所有行上面添加666 sed ‘1i 666’ user //第1行上面添加666 sed ‘2c 666’ user //将第2行替换为666 sed ‘c 666’ user //将所有行替换为666 sed 修改文本 awk 精确定位查找 逐行执行 前置指令 | awk 选项 条件 指令 awk 选项 条件 指令 文件 选项 -F 指定分隔符 指令 print 输出内容到屏幕 列 $1 第一列 $2 第二列 awk ‘{print}’ hello //输出文档所有内容 awk ‘{print $2}’ hello //输出文档每行第2列 awk ‘

正则表达式生态备查文档

天大地大妈咪最大 提交于 2019-12-13 19:18:32
正则语法解析 .* 贪婪匹配 .*? 非贪婪匹配 比如:<H1>正则匹配</H1> 使用/<.*>/匹配的结果为:H1>正则匹配</H1。 使用/<.*?>/匹配结果为:H1。 推荐几款好用的正则用具 1、regulex 简介:正则可视化验证工具 站点: https://jex.im/regulex github: https://github.com/CJex/regulex 2、regexper 简介:和regulex类似,也是将正则可视化 站点: https://regexper.com/ github: https://github.com/javallone/regexper 3、regexpal 简介:校验正则是否匹配的测试工具 站点: https://www.regexpal.com/ 4、debuggex 简介:也是校验正则是否匹配的测试工具,不过感觉交互上比regexpal相对更有意思些 站点: https://www.debuggex.com/ 来源: https://www.cnblogs.com/xudengwei/p/12036091.html

java 正则

别等时光非礼了梦想. 提交于 2019-12-13 16:14:08
简单示例: String str = "111"; String pattern = "^[0-9]*$"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(str); System.out.println(m.matches()); 复杂点的示例: String a_text = "10. mysql json 使用 类型 查询 函数(54165)"; Pattern pattern = Pattern.compile("^\\d+\\.\\s.+\\(\\d+\\)$");// 匹配 1. js 判断字符串中是否包含某个字符串(633291) Matcher matcher = pattern.matcher(a_text); if (matcher.find()) { String text = matcher.group(); System.out.println(text); int title_start = 0, title_end = 0; Pattern pattern2 = Pattern.compile("^\\d+\\.\\s");// 匹配 1. Matcher matcher2 = pattern2.matcher(a_text); if (matcher2.find()) {

PHP正则匹配内容中的img标签

守給你的承諾、 提交于 2019-12-12 01:35:37
preg_match_all('/<img(.*?)src=\"(.*?)\"(.*?)>/is', $content, $matches); matches[0] //整个img标签 matches[2] //图片的url 正则回顾: “$”  表示行结尾 “^”  表示行开始 或者 表示排除不符合的字符,^一般放在[]中。如[^1-5],该字符不是1~5之间的数字。 “|"   表示或者 "."   表示任意字符 ”?“  表示出现0到一次 ”*“  表示出现0到多次 ”+“  表示出现1到多次 ”{n}“  表示出现n次 ”{n,}“  表示至少出现n次 ”{n,m}“  表示出现n到m次 \d  任意一个十进制数字[0-9] \D  任意一个非十进制数字 \s  任意一个空白字符(空格、换行符、换页符、回车符、字表符 \S  任意一个非空白字符 \w  任意一个单词字符 \W  任意个非单词字符 修饰符: i   忽略大小写 s  单行文本模式 m  多文本模式 x  忽略空白字符 以下为复制内容: 括号字符() 在正则表达式中小括号的作用主要有: 改变限定符如(|、* 、^)的作用范围 如(my|your)baby,如果没有”()”,|将匹配的是要么是my,要么是yourbaby,有了小括号,匹配的就是mybaby或yourbaby。 进行分组,便于反向引用 反向引用

Nginx学习——location和rewrite

╄→尐↘猪︶ㄣ 提交于 2019-12-11 18:25:10
location语法: location [=|~|~*|^~] /uri/ { … } 记住以下即可: 完全匹配(=) 无正则普通匹配(^~)(^ 表示“非”,~ 表示“正则”,字符意思是:不要继续匹配正则) 正则表达式匹配(~或者~*) 普通匹配 rewrite语法: rewrite regex replacement [flag]; flag:last,break,redirect,permanent 常用正则: 来源: https://www.cnblogs.com/yb38156/p/12024119.html

正则表达是多行匹配问题别忘了

老子叫甜甜 提交于 2019-12-11 11:42:49
一般匹配任意字符都是(.*),这次妈蛋竟然不灵.原来换行和空白字符问题.  正则表达式中,“。”(点符号)匹配的是除了换行符“\n”以外的所有字符。但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符(包括换行符)的方法。   可以用 ([\s\S]*) ,也可以用 “([\d\D]*)”、“([\w\W]*)” 来匹配,就可以匹配包括换行符在内的任意字符。 规则 `<!-- Tocplus 15.1 -->([\d\D]*<!-- End of Tocplus -->` 匹配这个 <!-- Tocplus 15.1 -->里面的 <!-- End of Tocplus --> <!-- Tocplus 15.1 --> <script type="text/javascript"> tocplusTop=350; tocplusLeft=55; tocplusMinimizedImage='../../../kr08.tocplus007.com/img/minimized_ko.gif'; tocplusHAlign='right'; tocplusWidth=212; tocplusHeight=234; tocplusUserName='customer'; tocplusFrameColor='#f7ecee';

特征选择之经典三刀

a 夏天 提交于 2019-12-11 08:52:40
本文由作者授权发布,未经许可,请勿转载。 作者:侯江畔,网易杭州研究院算法工程师 数据决定了模型的上限,而算法只是去逼近这个上限。如何从海量特征中科学提取关键特征呢? 特征选择(Feature Selection)和特征提取(Feature Extraction)是特征工程(Feature Engineering)的两个重要子内容。其中特征提取是指从数据中找到可以表征目的的属性,而特征选择是从候选特征中选出“优秀”的特征。通过特征选择可以达到降维、提升模型效果、提升模型性能等效果,深度学习目前这么火热,其中一个重要原因是其减少了特征选择的工作,但对于机器学习,特征选择仍然是其应用中很重要的一步。 一、为什么要特征选择? 1.1特征数量与分类器性能的关系 一般来说,进入模型的特征数量与模型的效果之间满足以下曲线,在某个位置达到最优。过多或过少都会使分类器的效果发生严重的下降。 1.2特征不足的影响 当特征不足时,极易发生数据重叠,这种情况下任何分类器都会失效。如下图所示,仅依赖x1或x2都是无法区分这两类数据的。 1.3特征冗余的影响 增加特征可以理解为向高维空间映射,当这个“维度”过高时,容易造成同类数据在空间中的距离边远,变稀疏,这也易使得很多分类算法失效。如下图所示,仅依赖x轴本可划分特征,但y轴的引入使得同一类别不再聚集。 1.4特征选择的难点问题 首先我们已经明确

经常用的正则

怎甘沉沦 提交于 2019-12-10 15:18:00
密码 :密码由字母、数字组成,长度为8~20字符,不包含汉字 String regPwd = "^[a-zA-Z0-9]{8,20}$"; 邮箱: String regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; 账户名: 账户名由3~10位字母、数字组成,不包含汉字 String regAccount ="^([A-Za-z0-9]{3,10})$"; 身份证: String regCert = "^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$"; 验证方式: aaaa.matches(regPwd); 这是最简单的正则,但是如果一点都不知道,那也是天书 来源: https://www.cnblogs.com/senjiang/p/12016782.html