您好我正在研究编写一个与以下
匹配的正则表达式/book/The-title-of-the-book/0000000000/
其中The-title-of-the-book
是任何字母数字字符和' - ',0000000000000
是图书的10或13位数字,例如/book/To-kill-a-mockingbird/0099419785/
。
你能建议我用什么模式来构建正则表达式
答案 0 :(得分:3)
/^\/book\/([a-zA-Z0-9\-]+)\/(\d{10}|\d{13})\/$/
如果您要搜索此字符串的文字,也不需要^
和$
答案 1 :(得分:0)
尝试:
/book/([a-zA-Z\d-]+)/(\d{10}|\d{13})/
请注意,在某些语言中,/
用于分隔正则表达式,在这种情况下,您需要转义其中的/
:
/\/book\/([a-zA-Z\d-]+)\/(\d{10}|\d{13})\//
如果可能,请使用其他分隔符。
本书将在第1组中捕获,第2组是isbn。
答案 2 :(得分:0)
在这种情况下,我不会使用正则表达式,只是将字符串拆分为/最后一部分是ISBN,第二部分是标题。
我会参考评论
有些人在面对问题时会思考 “我知道,我会使用正则表达式。”现在他们有两个问题。
来自Jaime Zawinski的
答案 3 :(得分:0)
/^\/book\/[a-zA-Z0-9-]+\/\d{10,13}\/$/
未经测试,但我认为应符合您的要求。
编辑:这应该使ISBN为10或13个字符,而不是介于两者之间。
/^\/book\/[a-zA-Z0-9-]+\/(\d{10}|\d{13})\/$/
答案 4 :(得分:0)
在Python中你可以使用:
^/book/([a-zA-Z0-9-]+)/(\d{10,13})/$
答案 5 :(得分:0)
/book/[a-zA-Z0-9-]+/([0-9]{10}|[0-9]{13})/
这完全符合您的要求