Open jtwang7 opened 2 years ago
// 读取 '/Users/Profile/data-progress/data/trajs/399313_plot.txt'
const id = /\/([^\/]*)\_plot\.txt$/.exec(url)[1]
// 返回
// id = '399313'
🔥 解析
\/([^\/]*)$
这个模式可以分为两个部分:\/
和 ([^\/]*)$
。
\/
匹配斜杠字符 /
:由于斜杠字符在正则表达式中有特殊含义(表示开始或结束),因此需要在前面加上反斜杠进行转义。
([^\/]*)$
匹配除斜杠字符外的任意字符零次或多次,直到字符串的结尾为止。其中:
[^\/]
表示除斜杠字符外的任意字符。*
表示匹配前面的字符零次或多次。$
表示匹配字符串的结尾。因此,整个正则表达式的含义是:匹配字符串结尾处以斜杠字符 /
开头,后面跟着任意字符零次或多次的字符串,()
将捕获与其内部表达式相匹配的字符串。
获取文件名(不带后缀)
const filename = file_path.replace(/(.*\/)*([^.]+).*/ig,"$2");
正则表达式
正则表达式中使用 ES6 模板字符串
通过字面量方式
/ xxx /
声明的正则,是不能够使用模板字符串的。 在正则校验模板中使用模板字符串的正确方式:new RegExp()
关于
RegExp
构造函数的使用见:RegExp常用的正则表达式汇总
❇️ 验证数字:
^[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]*$
❇️ 验证非负整数(正整数 + 0)
^\d+$
❇️ 验证非正整数(负整数 + 0)
^((-\d+)|(0+))$
❇️ 验证长度为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}$
❇️ 验证是否含有
^%&',;=?$\"
等字符:[^%&',;=?$\x22]+
❇️ 验证汉字:
^[\u4e00-\u9fa5],{0,}$
❇️ 验证Email地址:
/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
❇️ 验证InternetURL:
^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
❇️ 验证电话号码:
^(\d3,4\d3,4|\d{3,4}-)?\d{7,8}$
❇️ 验证身份证号(15位或18位数字):
^\d{15}|\d{}18$
❇️ 验证一年的12个月:
^(0?[1-9]|1[0-2])$
❇️ 验证一个月的31天:
^((0?[1-9])|((1|2)[0-9])|30|31)$
❇️ 整数:
^-?\d+$
❇️ 非负浮点数(正浮点数 + 0):
^\d+(\.\d+)?$
❇️ 正浮点数
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
❇️ 非正浮点数(负浮点数 + 0)
^((-\d+(\.\d+)?)|(0+(\.0+)?))$
❇️ 负浮点数
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
❇️ 浮点数
^(-?\d+)(\.\d+)?$
❇️ 邮箱
^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$