/正则表达式特殊字符/修饰符(可选)
这里列一下正则的特殊字符及其用法,加深理解和映象。
* \
将字符变为特殊或非特殊字符。如 n 变为换行符 \n,特殊符号 ( 变为字符 \(。
* ^
匹配字符串起始位置。
* $
匹配字符串结束位置。
* *
匹配前面的子表达式零到多次。
* +
匹配前面的子表达式一到多次。
* ?
匹配前面的子表达式零到一次。
* {n}
匹配前面的子表达式的n个,如 o{2} 能够匹配 food 不能匹配 god。
* {n,}
至少匹配n个前面的子表达式,如 o{2,} 能够匹配 fooooood 不能匹配 god。
* {n, m}
至少匹配n次,至多匹配m次。
*
非贪婪模式 默认为贪婪模式,如 o+ 将匹配 foooood 的所有 o。而非贪婪模式(在匹配符后面加 ?),如 o+? 则只会匹配一个o
* .
匹配除换行符外任何单个字符。换行符为 \n 和 \r。
* (x)
捕获括号,匹配并记住匹配项。
* (?:x)
非捕获括号,匹配并不记住匹配项。如 /(?:foo){1,2}/,这里将 foo 作为一个整体进行匹配1到2次。
* x(?=y)
匹配x仅仅在x后面跟y的时候。?=y 表示字符串末尾是y。
* x(?!y)
匹配x仅仅在x后面不跟着y的时候。?!y 表示字符串末尾不是y。
* x|y
匹配 x 或 y,如 jack|rose 就可以匹配到 jack 和 rose 两个字符串。
* [xyz]
匹配方括号内任意字符。
* [^xyz]
反向字符集,匹配除方括号内字符的任意字符。
* [0-9]
范围匹配,匹配0-9范围内任意字符。
* \w
查找单词字符。单词字符包括:a-z、A-Z、0-9,以及下划线。
* \W
查找非单词字符。
* \d
查找数字字符。
* \D
查找非数字字符。
* \s
查找空白字符。空白字符包括空格、\n、\f、\r、\t、\v。
* \S
查找非空白字符。
* \b
匹配单词边界,通常匹配单词开头和结尾。如 /\bcd/ 匹配 cdkey。
* \B
匹配非单词边界。如 /\Bcd/ 匹配 abcd。
* \O
查找 NULL 字符。
* \n
换行符。
* \f
换页符。
* \r
回车符。
* \t
制表符。
* \v
垂直制表符。
修饰符
i
执行对大小写不敏感的匹配。
g
执行全局匹配。
m
执行多行匹配。
简单正则实例分析
/^[0-9]*$/
0-9范围内0到多个数字的组合,且字符开头结尾都是0-9的数字。即表示整数。如 1314、0
/^\d{m,n}$/
匹配m-n位的数字。由于开头结尾都是数字,所以它是一个固定长度的纯数字。
/^\-[1-9][0-9]*$/
匹配-开头,数字结尾,第一个字符为1-9,随后0-n个字符为0-9的字符。即非零负整数
。
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
这是匹配邮件的一个正则,我们一点点看。
正则用法在JavaScript中正则表达式用法为:/正则表达式特殊字符/修饰符(可选)特殊字符这里列一下正则的特殊字符及其用法,加深理解和映象。* \ 将字符变为特殊或非特殊字符。如 n 变为换行符 \n,特殊符号 ( 变为字符 \(。* ^ 匹配字符串起始位置。* $ 匹配字符串结束位置。* * 匹配前面的子表达式零到多次。* + 匹配前面的子表达式一到多次。* ...
这里说的
路由
拆分指的是将
路由
的文件,按照模块拆分,这样方便
路由
的管理,更主要的是方便多人开发。具体要不要拆分,那就要视你的项目情况来定了,如果项目较小的话,也就一二十个
路由
,那么是拆分是非常没必要的。但倘若你开发一些功能点较多的商城项目,
路由
可以会有一百甚至几百个,那么此时将
路由
文件进行拆分是很有必要的。不然,你看着index.js文件中一大长串串串串串串的
路由
,也是很糟糕的。
首先我们在router文件夹中创建一个index.js作为
路由
的入口文件,然后新建一个modules文件夹,里面存放各个模块的
路由
文件。例如这里储存了一个vote.js投票模块的
路由
文件和一个公共模块的
路由
文件。下面直
将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配\n。“\n”匹配换行符。序列“\”匹配“\”而“(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。
匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
匹配输入字符串的结束位置。如果设置了Re...
Vue
源码
Vue
Router(三)matcher
Vue
源码
Vue
Router(三)matchermatchercreateMatcheraddRoutesmatch总结
Vue
源码学习目录
Vue
源码
Vue
Router(三)matcher
学习内容和文章内容来自 黄轶老师
黄轶老师的慕课网视频教程地址:《
Vue
.js2.0 源码揭秘》、
黄轶老师拉钩教育教程地址:《
Vue
.js 3.0 核心源码解析》
这里分析的源码是Runtime + Compiler 的
Vue
.js
调试代码在:node_
最近看到
vue
源码的模板解析,parse 中主要就是用正则去解析template然后生成ast抽象树。这则匹配用到最多的就是match。
match([string] | [RegExp])
这里主要说正则表达式
1、返回值:Array/null
2、不使用g全局匹配时
var str='2019shanghai=nihao !!'
str.match(/\w[i]/)
可以...
匹配非法字符: /[@#\$%\^&\*\s+]+/g
关键字中含有特殊字符:/[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g
\s表示空白字符。包括,空格,制表符等
""只表示空格
\s+可匹配至少一个空白字符
[ ]+...
1.3
路由
匹配语法
1.3.1 概述
大多数应用程序使用静态
路由
(如 /news )和动态
路由
(如 /books/1 )就可以满足应用的需求,不过
Vue
Router 提供了更加强大的参数匹配能力。要匹配任何内容,可以使用自定义参数正则表达式,方法是在参数后面的圆括号中使用正则表达式。
1.3.2 参数中自定义正则表达式
使用静态部分来区分不同的 URL
当定义一个如 “ :id ” 的参数时,
Vue
Router 在内部使用正则表达式“ ([^/]+) ”(至少一个不是斜杠 / 的字符)从 URL
转载自 动态
路由
匹配我们经常需要把某种模式匹配到的所有
路由
,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在
vue
-router 的
路由
路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:const User = {
template: '<div>User</di...
在上面的代码中,我们使用了一个计算属性`numbersWithNewLine`,它使用`join()`方法将数字数组转换为一个带有换行符的字符串。然后,我们在模板中使用`v-for`指令循环遍历这个新的字符串数组,并将每个数字包装在一个`<p>`标签中显示出来。
如果你想要将换行符添加到每个数字前面,可以修改计算属性中的字符串拼接逻辑,像这样:
computed: {
numbersWithNewLine() {
return this.numbers.map((number) => `\n${number}`).join('');
这样,每个数字前都会添加一个换行符,然后再将它们连接成一个字符串。