转义

从零开始学正则(五)

白昼怎懂夜的黑 提交于 2020-03-01 23:08:00
壹 ❀ 引 我在 从零开始学正则(四) 一文中讲述了正则匹配的回溯法,以正则匹配过程引出了正则书写也会存在性能问题,并阐述了贪婪匹配,惰性匹配以及分支匹配时与回溯的中中关系。当然,对于初学者而言除了能写出正则以外,能读懂任意一段正则也是非常重要的。那么本篇文章主要针对正则表达式拆分展开分析,相信大家在阅读之后再面对各种变态长度的正则时,都能有理可据,化繁为简的拆分理解。 说在前面,正则学习系列文章均为我阅读 老姚《JavaScript正则迷你书》 的读书笔记,文中所有正则图解均使用 regulex 制作。那么本文开始! 贰 ❀ 正则的解构与操作符 编程语言一般都有操作符( 百科 ),但只要说到操作符就不得不讨论操作符的优先级,因为一堆操作符在一起,系统自己也得知道谁该先执行,谁要后执行。 那么正则中的操作符是什么呢?正则中的操作符体现在正则结构中,而结构又由特殊字符与普通字符构成。 JavaScript中的正则结构大致有这些: 字符字面量、字符组、量词、锚、分组、分支、反向引用 。也就是前几章节讲过的知识点, 我们简单复习一遍: 字符字面量: 当我们具体匹配某个字符时所写的正则字段,比如a匹配字段“a”,123匹配字段“123”,\. 匹配小数点等。 字符组: 当某个位置的字符可能是多种情况之一时,比如匹配任意一个数字,可以使用字符组[0-9],可简写为\d。除此之外还有反义字符组

Java 反斜杠如何转义的问题

99封情书 提交于 2020-02-29 21:09:10
引用 说明:有正斜杠与反斜杠之分,正斜杠,一般就叫做斜杠,符号为“/”;反斜杠的符号为“\” 引用 斜杠(/)在JAVA中没有什么特别的意义,就是代表一个字符‘/’; 反斜杠(\)则不然,它和紧跟着它的那个字符构成转义字符,如“\n”(表示换行)、“\””(表示字符‘”’)等,所以在字符串中要表示字符'\'要用 “\\”来表示,例:如果你这样定义一个字符串String s = “name\sex”是错误的,要这样定义String s = “name\\sex”; 引用 注意:在正则表达式中的“\\”表示和后面紧跟着的那个字符构成一个转义字符(姑且先这样命名),代表着 特殊的意义;所以如果你要在正则表达式中表示一个反斜杠\,应当写成“\\\\”。如果你这样获得一个Matcher,Matcher m = Pattern.compile(“\\”).matcher(“\\”)将会报错,你应当这样写Matcher m = Pattern.compile(“\\\\”).matcher(“\\”)才是正确且匹配的 引用 接下来我们来看一下String类中replace(CharSequence target,CharSequence replacement)方法与replaceAll(String regex, String replacement)方法的区别: 我们先看一个例子:

C#正则表达式小结

痞子三分冷 提交于 2020-02-29 17:08:22
只能输入数字:"^[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,}$"

C#正则表达式小结

旧城冷巷雨未停 提交于 2020-02-29 17:08:04
只能输入数字:"^[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,}$"

PHP中单引号与双引号的区别

核能气质少年 提交于 2020-02-29 10:50:57
在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" "。 一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析. PHP允许我们在双引号串中直接包含字串变量。 而单引号串中的内容总被认为是普通字符,因此单引号中的内容不会被转义效率更高。 比如: $str='hello'; echo "str is $str"; //运行结果: str is hello echo 'str is $str'; //运行结果: str is $str php中,双引号中的变量($var)和特殊字符(\r\n之类)会被转义,单引号中的内容不会被转义(所以效率更高)。 使用上的话, 我以前很喜欢在sql字符串里这样写$sql = "SELECT * FROM table WHERE id = $id",这样里面的$id可以被转义,单引号就不行。 在JavaScript中 单引号 和双引号没有区别,只要成对使用就行。 我在JavaScript 中使用单引号大多是因为 Javascript 和 HTML 打交道比较多,输出 HTML 片段的时候不需要转义 HTML 中属性的引号。 总之,看实际情况来用啦,怎么方便怎么使用。 来源: https://www.cnblogs.com/peteremperor/p/6375085.html

Shell脚本入门-7

百般思念 提交于 2020-02-29 09:01:59
Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似, 都是用于字符串的输出 。命令格式:echo string 您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串: echo "It is a test" ,这里的双引号完全可以省略, 以下命令与上面实例效果一致:echo It is a test 2.显示转义字符 : echo "\"It is a test\"" , 结果将是:"It is a test" , 同样,双引号也可以省略。 备注: \" \": 转移一对""符号。 3.显示变量: read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 #!/bin/sh read name echo "$name It is a test" 以上代码保存为 test.sh,name 接收标准输入的变量,结果将是: [root@www ~]# sh test.sh OK #标准输入 OK It is a test #输出 4.显示换行:注意: echo -e echo -e "OK! \n" # -e 开启转义 echo "It it a test" 输出结果: OK! -- 备注:(有一空行) It it a test 5.显示不换行: 注意: echo -e #!/bin/sh echo -e

JS转换HTML转义符

我的梦境 提交于 2020-02-29 02:46:03
今天在用wangeditor编辑器写后台管理文章页,在保存文章后需要调用一次编辑草稿,这时候需要把编辑的内容拿到编辑器中,结果输出了我的标签:<p>您好</p>.经过我的console.log(data)=="<p>打沙包</p> "。没错,我的<>被转义了,因为不转义的话没办法上传。 接下来,就是我从其他地方找来的正则。哈哈哈~ //去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+?>/g,'');//删除所有HTML标签 }    //普通字符转换成转意符 function html2Escape(sHtml) { return sHtml.replace(/[<>&"]/g,function(c){return {'<':'<','>':'>','&':'&','"':'"'}[c];}); }   我是用的下面这个,就好了。嘿嘿~ //转意符换成普通字符 function escape2Html(str) { var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'}; return str.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return

sqli-labs Less32-Less37

岁酱吖の 提交于 2020-02-28 23:56:31
Less-32 宽字节注入 参考文章链接: https://blog.csdn.net/helloc0de/article/details/76180190 https://blog.csdn.net/heiseweiye/article/details/82723478 宽字节: GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是ASCII字符(一字节)的现象,即将两个ascii字符误认为是一个宽字节字符。 中文、韩文、日文等均存在宽字节,英文默认都是一个字节。 在使用PHP连接MySQL的时候,当设置“set character_set_client = gbk”时会导致一个编码转换的问题。 例子: id= 1’ 处理 1 \’ 进行编码 1%5c%27 带入sql后 id = \’ and XXXX 此时无法完成注入 id=1%df’ 处理 1%df\’ 进行编码 1%df%5c%27 带入sql后 id =1運’ and XXX 此时存在宽字节注入漏洞 推荐解码网站: http://www.mytju.com/classcode/tools/urldecode_gb2312.asp 方法一 这一关我们回到phpstudy上做 尝试注入点,发现出现了转义 http://127.0.0.1

HTML字符实体(Character Entities),转义字符串(Escape Seque...

不羁的心 提交于 2020-02-28 21:24:02
为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用。这些符号是不显示在我们最终看到的网页里的,那如果我们希望在网页中显示这些符号,该怎么办呢? 这就要说到HTML转义字符串(Escape Sequence)了。 转义字符串 (Escape Sequence)也称字符实体(Character Entity)。在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。第二个原因是,有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。 转义字符串的组成 转义字符串(Escape Sequence),即字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。 比如,要显示小于号(<),就可以写 < 或者 < 。 用实体(Entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思

转义字符(C语言)

无人久伴 提交于 2020-02-27 11:20:21
#include <stdio.h> /** 转义字符 --通常用转义字符表示ASCII字符集中不可打印的控制字符和特定功能的字符 --转义字符只能使用小写字母,每个转义字符只能看做一个字符 -- \v 垂直制表 \f 换页符对屏幕没有任何影响,但是会影响打印机执行响应操作 */ int main(void) { //换行符\n //横向跳格符 \t ,\t 是一个制表符号 相当于键盘上的Tab键的长度(一般为8个空格),相当于tab键,8个空格长度 printf("大家好,我是小花\t"); printf("嗨,我是小李\n\n\n"); //输出的是:大家好,我是小花 嗨,我是小李 //退格符 \b ,使当前的输出位置退一格,即输出的起始位置左移一位 printf("我要像的风一样自由\n"); printf("老李,你\b要老婆不要\n\n\n"); //这里输出的时候“要”字把“你”覆盖掉了,因为退了一格;所以这里输出的是 老李,要老婆不要 //回车符 \r ,使当前输出位置移到本行开头;如果本行开头有别的内容,将进行覆盖操作 printf(" 大家好,我是一格哈哈哈"); printf("\r嗨,我是奥术大师\n"); //输出的是:嗨,我是奥术大师 大家好,我是一格哈哈哈;可以看到后面的移到了本行的开头 printf("大家好,我是一格哈哈哈"); printf("