-
Java与JavaScript正则表达式的区别
2020-09-02 11:39:10我把后端的验证规则直接给我前端同事用,反正在前端中出现编译出错。 二、对比了一下两个正则,发现是Java的正则里面有很多转义的\,然后查询了一下Java与JavaScript正则表达式的转义的规则,发现两个是不一样的。...一、接受了一个项目,密码验证方面需要前后端使用一样的验证规则。我把后端的验证规则直接给我前端同事用,反正在前端中出现编译出错。
二、对比了一下两个正则,发现是Java的正则里面有很多转义的
\
,然后查询了一下Java与JavaScript正则表达式的转义的规则,发现两个是不一样的。区别如下:(参考了此文章:[正则表达式]JavaScript与Java中正则表达式的区别)三、在后端中的Java的正则为:
String regex = "^(?:(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\\1{2,})[A-Za-z0-9!{ }~<>,;:_=?*+#.\"&§%°()\\|\\[\\]\\-\\$\\^\\@\\/]{8,64}$";
在JavaScript中的正则为:
/^(?:(?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})[A-Za-z0-9!{ }~<>,;:_=?*+#."&§%°()\|\[\]\-\$\^\@\/]{8,64}$/
四、可以看到两个正则的区别在于转义字符,Java使用的是
\\
,JavaScript使用的是\
。这个网站可以直接转换的:https://c.runoob.com/codedemo/3527。在eclipse或者IDEA中直接复制java的正则到网站中,网站会自动转换的,不过好像Mac电脑的不行的。五、总结:如果有疑问可以直接留言评论,如果觉得对你有帮助,可以小小的赞赏一杯奶茶钱,谢谢!!
-
java 正则匹配_正则表达式真的很强大,可惜你不会写
2020-11-29 05:32:30专注于Java领域优质技术,欢迎关注本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。...专注于Java领域优质技术,欢迎关注
本文旨在用最通俗的语言讲述最枯燥的基本知识
文章提纲:
- 元字符
- 重复限定符
- 分组
- 转义
- 条件或
- 区间
正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。
但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文似的字符串,替代了你用一大篇幅的if else代码来做一些内容校验。
既然喜欢,那就动手学呗,可当你百度出一一堆相关资料时,你发现无一不例外的枯燥至极,难以学习(实话说,当年不理君也是这样的心态)。
下面,不理君尝试用一种比较通俗点的方式讲一下正则,让你能在读完之后,自己写出一些简单的正则,再不济,能看到别人写的正则,那也不错了。
1.元字符
万物皆有源,正则也是如此,元字符是构造正则表达式的一种基本元素。
我们先来记几个常用的元字符:
有了元字符之后,我们就可以利用这些元字符来写一些简单的正则表达式了,
比如:
- 匹配有abc开头的字符串:
babc或者^abc
- 匹配8位数字的QQ号码:
^dddddddd$
- 匹配1开头11位数字的手机号码:
^1dddddddddd$
2. 重复限定符
有了元字符就可以写不少的正则表达式了,但细心的你们可能会发现:别人写的正则简洁明了,而不理君写的正则一堆乱七八糟而且重复的元字符组成的。正则没提供办法处理这些重复的元字符吗?
答案是有的!
为了处理这些重复问题,正则表达式中一些重复限定符,把重复部分用合适的限定符替代,下面我们来看一些限定符:
有了这些限定符之后,我们就可以对之前的正则表达式进行改造了,比如:
- 匹配8位数字的QQ号码:
^d{8}$
- 匹配1开头11位数字的手机号码:
^1d{10}$
- 匹配银行卡号是14~18位的数字:
^d{14,18}$
- 匹配以a开头的,0个或多个b结尾的字符串
^ab*$
3. 分组
从上面的例子(4)中看到,*限定符是作用在与他左边最近的一个字符,那么问题来了,如果我想要ab同时被*限定那怎么办呢?
正则表达式中用小括号()来做分组,也就是括号中的内容作为一个整体。
因此当我们要匹配多个ab时,我们可以这样
如:匹配字符串中包含0到多个ab开头:
^(ab)*
4. 转义
我们看到正则表达式用小括号来做分组,那么问题来了:
如果要匹配的字符串中本身就包含小括号,那是不是冲突?应该怎么办?
针对这种情况,正则提供了转义的方式,也就是要把这些元字符、限定符或者关键字转义成普通的字符,做法很简答,就是在要转义的字符前面加个斜杠,也就是即可。
如:要匹配以(ab)开头:
1^((ab))*
5. 条件或
回到我们刚才的手机号匹配,我们都知道:国内号码都来自三大网,它们都有属于自己的号段,比如联通有130/131/132/155/156/185/186/145/176等号段,假如让我们匹配一个联通的号码,那按照我们目前所学到的正则,应该无从下手的,因为这里包含了一些并列的条件,也就是“或”,那么在正则中是如何表示“或”的呢?
正则用符号 | 来表示或,也叫做分支条件,当满足正则里的分支条件的任何一种条件时,都会当成是匹配成功。
那么我们就可以用或条件来处理这个问题
1^(130|131|132|155|156|185|186|145|176)d{8}$
6. 区间
看到上面的例子,是不是看到有什么规律?是不是还有一种想要简化的冲动?
实际是有的
正则提供一个元字符中括号 [] 来表示区间条件。
- 限定0到9 可以写成[0-9]
- 限定A-Z 写成[A-Z]
- 限定某些数字 [165]
那上面的正则我们还改成这样:
^((13[0-2])|(15[56])|(18[5-6])|145|176)d{8}$
好了,正则表达式的基本用法就讲到这里了,其实它还有非常多的知识点以及元字符,我们在此只列举了部分元字符和语法来讲,旨在给那些不懂正则或者想学正则但有看不下去文档的人做一个快速入门级的教程,看完本教程,即使你不能写出高大上的正则,至少也能写一些简单的正则或者看得懂别人写的正则了,如果需要进阶学习,那就靠各位好好修炼啦。
来自:https://juejin.im/post/5b96a8e2e51d450e6a2de115
-
java replace 正则_javacript replace 正则取字符串中的值并替换【推荐】
2021-03-08 21:44:24问题:在使用ueditor 富文本编辑器,给字体颜色时,发现getCent后的内容颜色为rgb如 aaaaa而前端需求rgb的读取不了,因此要转成16进制的颜色。找了uedtitor编辑器一圈,没找到方法。因此。我想到的解决方法是,在...replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
问题:
在使用ueditor 富文本编辑器,给字体颜色时,发现getCent后的内容颜色为rgb
如 aaaaa
而前端需求rgb的读取不了,因此要转成16进制的颜色。找了uedtitor编辑器一圈,没找到方法。
因此。我想到的解决方法是,在提交保存之前,把富文本里的内容找出rgb颜色并替换成16进制颜色。
解决的js如下
3){
return "";
}
value = "#";
for (var i = 0,color; color = array[i++];) {
color = parseInt(color.replace(/[^\d]/gi,''),10).toString(16);
value += color.length == 1 ? "0" + color : color;
}
value = value.toUpperCase();
}
return value;
}
js正则replace 还是好用的哈。
str = str.replace(/ color_tag=\"(#.{6})\"/g,function(){
return "="+arguments[1];
})
console.log(str);
}
总结
以上所述是小编给大家介绍的javacript replace 正则取字符串中的值并替换。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
-
java正则表达式,判断前端参数,修改表中另一个字段的值
2020-12-19 15:02:56前端传参,调用接口 将两个值都传给后端,做比较,符合条件,修改数据表中另一个字段值 init (id) { this.dataForm.id = id || 0 this.visible = true this.$nextTick(() => { this.$refs['dataForm']....前端传参,调用接口
将两个值都传给后端,做比较,符合条件,修改数据表中另一个字段值
init (id) { this.dataForm.id = id || 0 this.visible = true this.$nextTick(() => { this.$refs['dataForm'].resetFields() if (this.dataForm.id) { this.$http({ url: this.$http.adornUrl(`/这里是接口/${this.dataForm.id}`), method: 'get', params: this.$http.adornParams() }).then(({data}) => { if (data && data.code === 0) { // 把这两个值传入后端 this.dataForm.nowYear = data.sys.nowYear this.dataForm.nowYearStatus = data.sys.nowYearStatus } }) } }) },
后端代码
public int updateById(SysEntity sysEntity) { // 要验证的字符串 前端接收的参数 String str = sysEntity.getNowYear(); // 正则表达式规则 汉字 String regEx = "^[\\u4e00-\\u9fa5]{0,}$"; // 正则表达式规则 整数或者小数 String regExNum = "^[0-9]+\\.{0,1}[0-9]{0,2}$"; // 编译正则表达式 Pattern pattern = Pattern.compile(regEx); Pattern patternNum = Pattern.compile(regExNum); Matcher matcher = pattern.matcher(str); Matcher matcherNum = patternNum.matcher(str); // 查找字符串中是否有匹配正则表达式的字符/字符串 boolean rs = matcher.find(); boolean rsNum = matcherNum.find(); if (rs == true) { //是否上升,1高于,0小于,2等于 // 判断 符合条件修改IfRise的值 sysTargetEntity.setIfRise("2"); } if (rsNum==true) { // 现状值和目标值相比 现状>目标就是1 // 接收的两个参数相比较 int result = sysEntity.getNowYearStatus().compareTo(sysEntity.getNowYear()); if (result>0) { // 是否上升,1高于,0小于,2等于 sysEntity.setIfRise("1"); } else if (result<0){ sysEntity.setIfRise("0"); } else if (result==0) { sysEntity.setIfRise("2"); } } return this.baseMapper.updateByIds(sysTargetEntity); }
正则
整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{n}$"。 只能输入至少n位的数字:"^\d{n,}$"。 只能输入m~n位的数字:。"^\d{m,n}$" 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。 只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。 只能输入非零的正整数:"^\+?[1-9][0-9]*$"。 只能输入非零的负整数:"^\-[1-9][]0-9"*$。 只能输入长度为3的字符:"^.{3}$"。 只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。 只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。 只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。 只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。 只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。 验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。 验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。 只能输入汉字:"^[\u4e00-\u9fa5]{0,}$" 验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。 验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。 验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。 验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。 验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。 验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff]
-
replace正则替换java_javacript replace 正则取字符串中的值并替换【推荐】
2021-02-27 15:57:39问题:在使用ueditor 富文本编辑器,给字体颜色时,发现getCent后的内容颜色为rgb如 aaaaa 而前端需求rgb的读取不了,因此要转成16进制的颜色。找了uedtitor编辑器一圈,没找到方法。因此。我想到的解决方法是,在... -
java 正则匹配多个并列关键词_你真的会写正则表达式吗?
2020-11-22 20:47:11本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持... -
Java 正则校验手机号 工具类
2017-05-06 21:09:41前后台分离开发,就需要对传参的数据进行校验,你不知道前端会给你传过来什么乱七八糟的数据,如果在后面的逻辑里面出错了。那就是你后端的问题了。所以传参接收来的数据校验十分重要。我负责的模块很多地方都需要... -
讲给后台程序员看的前端系列教程(39)——正则表达式
2019-09-15 11:20:57正则表达式(Regular ...正则表达式的应用范围非常之广泛,最初是由Unix普及开来的,后来在广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby以及Python等等。 -
java 关键字匹配_Java----用正则表达式匹配Java源码中的关键字
2021-02-12 20:11:07写这个博客主要是稍微系统的学一下Java的正则表达式吧。还有因为,之前遇到一个问题,没有办法解决,我来了一...从前有一个前端小姐姐向后端传送了一个时间的数据类型,然而她传给我的是如下格式:2017年08月18日15... -
Java----用正则表达式匹配Java源码中的关键字
2017-08-18 17:02:00写这个博客主要是稍微系统的学一下Java的正则表达式吧。还有因为,之前遇到一个问题,没有办法解决,我来了一招反向匹配,骚的我自己都...从前有一个前端小姐姐向后端传送了一个时间的数据类型,然而她传给我的是如... -
正则表达式
2018-09-29 18:16:37正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你... -
正则表达式实践
2020-02-06 09:29:59正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你... -
正则表达式入门
2019-01-19 22:08:03正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给... -
正则表达式发明者_你是如何学会正则表达式的?
2020-12-24 12:23:54正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你... -
手机号码正则_正则表达式真的很强大,可惜你不会写
2021-01-14 00:00:16专注于Java领域优质技术,欢迎关注本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。... -
excel中用正则匹配_你真的会写正则表达式吗?
2021-01-05 13:38:19本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持... -
java中的前台传入参数检验_Java的接受前端传递的参数的格式验证
2021-03-08 23:16:20Java后台在接受前端传递的参数时候会判断参数的格式是否正确如果参数格式不正确,直接返回给前端页面一些错误的提示。这样就减少了垃圾数据进入数据库中的操作。前端校验一般都用正则,后台接受数据如何校验呢?下面... -
正则表达式的使用
2020-12-27 19:37:49正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你... -
正则表达式基础入门
2020-06-19 11:19:21正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给... -
正则表达式三分钟入门
2020-06-04 14:14:03正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给... -
系统认识正则表达式
2020-09-20 20:47:21正则表达式在几乎所有语言中都可以使用,无论是前端的 JavaScript、还是后端的 Java、c#。他们都提供相应的接口 / 函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程... -
手机号码正则_学习正则表达式的入门基本知识,最最最通俗
2021-01-15 18:22:13本文旨在用最通俗的语言讲述最枯燥的基本知识正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门... -
正则表达式只能写数字_正则表达式真的很骚,可惜你不会写!
2021-01-17 20:35:58反义正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程... -
正则表达式只能写数字_正则表达式真的很骚,可惜你不会写
2021-01-30 03:40:41源:https://juejin.im/post/5b96a8e2e51d450e6a2de115本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用... -
idea正则替换小技巧
2019-11-20 10:50:32这个java类里面的属性就是mybatis的自动生成,带了很多注释,但如果想换成swagger来展示给前端看的时候就需要替换成下面的样子。 想要做到这一步只需要执行下面的正则就行。首先点击打开替换窗口,idea原生快捷键... -
【转】正则表达式基础
2019-04-12 10:29:00正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给... -
你是如何学会的正则表达式
2020-07-30 14:34:47正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给... -
正则表达式基础入门看这一篇就够了
2018-09-28 10:16:34正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给...