这个问题是史诗般的失败,但这是一个有效的解决方案.这是基于Gumbo的答案(Gumbo接近工作,所以我选择它作为接受的答案):
r'(?=[a-zA-Z0-9\-]{4,25}$)^[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*$'
Run Code Online (Sandbox Code Playgroud)
我正在使用Python,我不是试图提取值,而是测试以确保它符合模式.
spam123-spam-eggs-eggs1
spam123-eggs123
spam
1234
eggs123
Run Code Online (Sandbox Code Playgroud)
eggs1-
-spam123
spam--spam
Run Code Online (Sandbox Code Playgroud)
我只是不能在开始或结束时冲刺.这里有一个问题是通过在事实之后获取字符串值而在相反方向上工作,但我只需要测试该值以便我可以禁止它.此外,它最多可以有25个字符长,但至少有4个字符长.此外,没有2个破折号可以互相接触.
这是我在进行一些后观实验后得出的结果:
# Nothing here
Run Code Online (Sandbox Code Playgroud) 例: -this--is---a-test--
我想要的是: this-is-a-test
谢谢你的回答!:)
在我的博客应用中,用户可以输入任何文本作为其条目的标题,然后根据文本生成URL.
我验证他们的标题,以确保它只包含字母和数字.
如果他们输入类似的东西
Lorem 3 ipsum dolor sit amet
Run Code Online (Sandbox Code Playgroud)
我怎么能生成这个文本更多的SEO友好版本:
Lorem-3-ipsum-dolor-sit-amet
Run Code Online (Sandbox Code Playgroud)