我正在使用umbraco,其中字段的验证是通过正则表达式完成的。在一个字段中,我希望允许用户使用富文本编辑器(tinymce)设置文本样式,但我仍想限制他们可以输入的字符数。
我目前正在使用此正则表达式,但它会检查字符总数,因此包括html。
^[\s\S]{0,250}$
是否有正则表达式不计算html标记中的字符。
答案 0 :(得分:1)
简短的回答是否定的。至少,没有任何理智的正则表达式,没有一个允许递归或平衡组的高级正则表达式引擎,也许根本没有。可识别和忽略HTML标记的正则表达式必须解析HTML才能执行此操作,down that road lies madness.
但是,你可以使用某种预处理方式,例如客户端的jQuery或服务器端的其他东西,来解析HTML并删除标签之前您应用长度验证。
你确定要这么做吗?如果您将样式化输入存储在数据库中,那么这些HTML标记将计入您的列大小,就像其他所有内容一样。如果您将这些存储在varchar(250)列中,则您必须将HTML标记计为250的一部分,否则将其删除并丢失所有样式信息。
答案 1 :(得分:0)
一步完成这一步很难(几乎不可能),因为你试图检测的语法是而不是无上下文。两个步骤很容易;只需先进行s/<.+?>//
替换,然后删除所有标记,然后重新计算。
相关说明,上面的正则表达式有点傻。您可以使用.
字符来表示任何字符;你不必做你正在使用的“空白或非空白”技巧。
^.{0,250}$