【问题标题】:Regular Expression that stops HTML Tags停止 HTML 标签的正则表达式
【发布时间】:2015-02-27 11:03:32
【问题描述】:

因此,作为我正在编写的 xsd 架构的一部分,我正在添加接受字符串内容的元素,但我想要做的是阻止用户输入 HTML 标签之类的内容。所以我认为最好的方法是添加一个限制性模式,所以我想传入一个正则表达式,它会阻止用户传入 HTML 标签,但我的正则表达式知识很差,实际上它非常差。

到目前为止我有这个

<xsd:element name="item" minOccurs="0" maxOccurs="42" type="type:extraInfoType" >
    <xsd:complexType>
        <xsd:attribute name="name" type="xsd:string" />
    </xsd:complexType>
</xsd:element>


<xsd:complexType name="extraInfoType">
    <xsd:simpleContent>
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="" /> // So I want a regular expression here.
        </xsd:restriction>
    </xsd:simpleContent>
</xsd:complexType>

所以我的问题是阻止用户输入 HTML 标签的正则表达式是什么?

我见过类似&lt;(img|a)[^&gt;]*&gt;(?&lt;content&gt;[^&lt;]*)&lt; 的东西,但从我对正则表达式的最低理解来看,这仅用于检查&lt;img&gt;&lt;a&gt; 标记。我想检查所有标签。

我还认为我可以只做[a-zA-Z0-9] 这样可以使元素只接受字符和数字而不接受特殊字符吗?如果我想接受某些特殊字符,例如"'@,.&amp;()£ 和 @987654,该怎么办?

【问题讨论】:

  • 你想要的很难正确实现。所以你可以使用类似&lt;[/!]?\S+[\s\S]*?&gt; 的东西,但如果它搞砸了也不要感到惊讶:)
  • @HamZa 这个正则表达式到底能为我做什么?我的正则表达式知识令人震惊,所以我实际上不确定这会做什么。
  • 其实看看&lt;[\/!]?\S[\s\S]*?&gt;这个表达式。这是online demo,您可以在其中测试并阅读说明。
  • 如果您使用从answerprevious question 的任一XSD 1.0 解决方案,您不必检查标签,因为属性值已经不能包含标签.
  • 但是,您可能仍希望在接口级别sanitize your input 向 XML 添加用户输入。可以在 here 找到一些 JavaScript 想法。

标签: regex xsd


【解决方案1】:

像 \S(非空白字符)一样使用 character classes 怎么样?

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 2014-08-23
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2011-05-03
    相关资源
    最近更新 更多