如何限制小数点后0以外的数字

时间:2017-02-16 16:35:42

标签: regex xml xsd xsd-validation

我试图限制小数点后面的数字,只允许数字零。例如,如果值为3431.0000,则此值有效。但是,如果值为3431.1110或3431.1000则无效。任何人都可以帮助我如何添加规则来限制我的架构文件中的这种要求?我使用JAXB验证器验证模式,下面是我的模式文件中的代码片段。

<xs:simpleType name="Decimal8-2">
        <xs:restriction base="xs:decimal">
        <xs:fractionDigits value="4" />
        <xs:minExclusive value="0" />
        <xs:pattern value="\d+\.\d{4}" />
        </xs:restriction>
    </xs:simpleType>

2 个答案:

答案 0 :(得分:1)

<xs:pattern value="\d+\.0{4}" />

以上是正确的答案,但是它将接受unicode中的所有种类的digi,以确保它仅接受(西方)阿拉伯数字(1,2,..)。我会避免使用“ / d ”,然后使用[0-9]代替

<xs:pattern value="[0-9]+\.0{4}" />

xsd中的正则表达式解析器接受有效的数字,例如[١,٢,٣,٤]。通常不是你想要的

如果您想避免像092这样的前导零,也可以使用[0-9]来方便,您可以将正则表达式写为:

<xs:pattern value="[1-9][0-9]*\.0{4}" />

答案 1 :(得分:0)

你非常接近。只需改变

create table teacher_details(
    teacher_user_id varchar(30) not null,
    teacher_name varchar(60) not null,
    teacher_email varchar(50) not null,
)

/*Alter teacher_details table for primary key*/


alter table teacher_details
add constraint pk_teacher_details primary key (teacher_user_id, teacher_email)

/* Table for exam */

create table exam_details(
    exam_id varchar(30) not null,
    teacher_user_id varchar(30) not null,
)

/* edited the drop table command to avoid confusion*/

/*Alter exam_details for primary key*/

alter table exam_details
add constraint fk_exam_details FOREIGN KEY (teacher_user_id)
    REFERENCES teacher_details(teacher_user_id)

  <xs:pattern value="\d+\.\d{4}" />

要求所有小数位为 <xs:pattern value="\d+\.0{4}" />