<b>字符串操作:</b>
strObj.charAt(index) 返回 字符/''
strObj.indexOf(字符) 返回 下标/-1
strObj.lastIndexOf(字符) 返回 下标/-1
strObj.substring(start,end) 返回 字符/''
strObj.split(规则) 返回 数组/长度为1的数组
strObj.toUpperCase('bmw') 返回 字符
strObj.toLowerCase()
strObj.charCodeAt(index) 返回 数字(code)
String.fromCharCode(code) 返回 字符/''
strObj.replace(要替换的字符,替换后的字符) 返回 字符/''
strObj.replace(要替换的字符,function(s){
s == 每次找到的 要替换的字符
})
<b>新的字符方法:(常用于正则)</b>
strObj.search(字符|正则) 相当于~~ indexOf
strObj.match(字符|正则) 返回 数组/null
<b> 正则的方法:</b>
re.test(字符) true/false
*** 只找到一组满足需求的,就是true
<b> 正则:表达式、规则 (regular expression)</b>
干嘛的: 操作字符的
区别: 正则只是个规则,字符方法是具体的实施
场景: 邮箱校验,手机号,身份号...
推荐: 操作字符的情况,都用正则,性能更优
<b>正则公共特性:</b>
惰性匹配(懒,笨):默认情况只找一个
贪婪原则 1个我要,多了我也要
匹配: 默认情况下左到右一个一个整体匹配
*** 行首行尾,建议永远都加上
<b>创建正则对象:</b>
var re = new RegExp('规则','选项') js风格
var re = /规则/选项 perl风格
<b>规则:</b>
量词: 默认情况只管前面一个,一组
{n} 正好n次
{n,m} n到m个
{n,} 至少n次,多了不限
{0,m} 至多m次,少了不限
+ 一次,或者多次 {1,}
* 任意次 {0,} 不推荐
? 有或者无 {0,1}
或: | 优先级很低
修饰:
^ 行首
$ 行尾
\b 单词边界 (boundary) 一个单词两个边界
能把单词分开,都是boundary,不是单词的,就是单词边界
_ 是个单词 -不是单词
方括号: []
里面的内容任选一个,不可都选
- 多少到多少
[]里面 加\ 为了好记忆,目标去了功能
^ 在方括号里面: 排除,写在最前面,排除后面所有
分组:()
要处理的内容编组
选项:
i ignore(忽略大小写)
g global(全局查找)
m muti-line(多行模式)
转义:
js:
\ 就是转义本身
\n n被转义
\nX X不被转义
*** \xX X不转义, 不是所有的x都会被转义
如果需要\(转义本身)出现 \\
正则:
\d digital(数字) [0-9]
\w word(单词) 英文数字下划线 [a-zA-Z0-9_]
\s space(空白字符)
. 任意字符
\W 非单词
\D 非数字
\S 非空白字符
\ 如果需要\本身出现,再加\
\u