用于停止HTML标记的正则表达式

时间:2015-02-27 11:03:33

标签: regex xsd

因此,作为我正在编写的xsd架构的一部分,我正在添加包含String内容的元素,但我想要做的是阻止用户输入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标签吗?

我见过类似<(img|a)[^>]*>(?<content>[^<]*)<的内容,但是我对正则表达式的最小理解是,这仅用于检查<img><a>标记。我想检查所有标签。

我还以为我可能会[a-zA-Z0-9]这样做会使元素只接受字符和数字而没有特殊字符?如果我想接受某些特殊字符,例如"'@,.&,{{1},该怎么办? },()£

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

根据我的经验,大多数&#34;标签&#34; (=节点/元素名称)包含字母数字,点,冒号和连字符。 因此,通用标记可以与</?[\w:.-]+(?:\s[^<]*?>|>)模式匹配。但是,您需要检查特定情况的转义并允许多行输入匹配。