如何编写正则表达式校验字符串首尾是否包含斜杠(/)
可用正则方案
你需要的是带首尾锚点的正则,语法如下:
允许中间内容为空(可匹配//)
/^\/.*\/$/
禁止中间内容为空(不可匹配//)
/^\/.+\/$/
规则说明
^锚定字符串开头,确保第一个字符是斜杠\/转义后的斜杠字符,匹配/.*/.+匹配中间任意字符,*表示允许零个字符,+表示至少要有一个字符$锚定字符串结尾,确保最后一个字符是斜杠
如果需要支持中间包含换行符的场景,添加s修饰符即可:/^\/.*\/$/s
使用示例(JavaScript环境)
const checkSlashWrap = (str) => /^\/.*\/$/.test(str); console.log(checkSlashWrap("/anystring/")); // 输出 true console.log(checkSlashWrap("/test/path/123/")); // 输出 true console.log(checkSlashWrap("no/start/slash/")); // 输出 false console.log(checkSlashWrap("/no/end/slash")); // 输出 false console.log(checkSlashWrap("//")); // 输出 true,换成/^\/.+\/$/时输出false
原有正则的问题
你写的/\/(\w+)/ig/\存在以下错误:
- 语法错误:正则字面量末尾多了无效的
/\字符,无法正常解析 - 缺少首尾锚点
^和$,只要字符串内部出现/加单词字符就会匹配,无法限制斜杠必须在首尾 - 仅匹配了开头的斜杠加后面的单词字符,没有匹配结尾的斜杠,且
\w+仅支持字母、数字、下划线,无法匹配带特殊字符、中文、路径分隔符的中间内容
内容的提问来源于stack exchange,提问作者rk01
相关产品推荐
相关产品推荐

