我试着先搜索这个问题,但没有找到我需要的,这里是:
我有一个字符串像:";substring1/substring2.substring3";(例如"library/History.read")
我需要一个正则表达式来检查:
- 子字符串1必须是"0";图书馆">
- substring2的开头必须有一个标题字母
- 子字符串3必须是"0";读取">
我不熟悉正则表达式,目前我写的是:'library/([a-zA-Z])\.(read)'
,但不正确。请帮帮我,谢谢!
有很多方法可以解决regex问题,从您自己的尝试开始,以下是行之有效的方法!:-)
library/([A-Z][a-zA-Z]+).(read)
你有三个小错误:
.
是一个匹配除换行符以外的任何字符的字符类。像这样逃离你的.
.
而不是像这样逃离\.
;以及- 您的第一个捕获组正好匹配一个字母。你错过了量词。使用
+
分类器匹配一个或多个 - 正如Peter所指出的,你的第一个大写字母缺少一个字符类
试试这个正则表达式:
testStrings = ["library/History.read", "library/other.read", "library/Geography.read", "library/History.unread", "ebook/hstory.read", "library/StackOverflow.read"]
regex = /library/[A-Z][^.]*.read/
testStrings.forEach(testString => {
console.log(regex.test(testString) + " - " + testString)
})