这两天对js正则表达式的认识,又有所强化:
1. 正则匹配顺序:
直接看示例: /^\s*(.*)\s*$/gi(愿意是实现trim功能) 匹配文本 " abcd adddd "
由于*的贪婪性,通过^\s* 先顺序读取到文本开头的空格,然后继续匹配,正则的.*匹配了后边所有的内容(而尾部\s*$ 则仅仅匹配了空字符串)
按照这种匹配顺序,就可以用一种替换方案:先去掉开头的空白,再去掉尾部的空白。
2. 反义字符类的使用:
之前一直有误区,认为直接使用^就可以表示反义,其实正确的说法应该是:
配合[^]才能实现反义字符类
示例:/[^1-9]/ 表示匹配的内容不是数字1-9.
3. 一个示例看思维:
从指定字符串中提取域名和端口号,如:
www.123.com
www.456.com:8080
正则:re = /([^\/\:]*):?(\d*)/
(之前一直纠结于/.+:?(\d*)/,明显.+具有贪婪性,直接匹配整个字符串。所有,针对这种场景,需要反过来思考)