在处理 Django 模板标签时,我发现自己需要获取一个字符串并将其转换为 CSS 标识符,以便它可以成为 html 元素的类属性的一部分。问题是字符串可以包含空格,这使得它无法用作 CSS 标识符,并且它也可以包含标点符号。
我的想法是使用正则表达式撕掉好的部分,然后将它们重新组合在一起,但我不知道如何表达重复的组模式。这是我所拥有的
to_css = re.compile(r"[^a-z_-]*([a-z0-9_-]+[^a-z0-9_]*)+", re.IGNORECASE)
@register.filter(name='as_css_class')
def as_css_class(value):
matches = to_css.match(value)
if matches:
return '-'.join(matches.groups())
return ""
问题来与你这样做:
as_css_class("Something with a space in it")
你得到
'it'
我希望 + 将适用于(组),但显然它没有做我想要的。