我正在尝试使用正则表达式模式##.##.##.##
的角度反应形式实现现场验证。对于某些模式,它不起作用。我尝试了以下输入12.25.36.25
,但验证失败,并使用了regextester测试了模式(^\d{2}.\d{2}.\d{2}.\d{2}$)
,效果很好。我不确定这里出了什么问题。非常感谢您的帮助。
这里是StackBlitz。
答案 0 :(得分:1)
原因是您忘记在class question-base
中添加名为pattern
的字段。
这是代码:
export class QuestionBase<T> {
...
pattern: string;
constructor(options: {
...
pattern?: string
} = {}) {
...
this.pattern = options.pattern || null
}
}
另一个问题是##。##。##。##不是有效数字。您需要将该输入更改为text
类型。最后,如果您的模式是正则表达式,则需要使用javascript的正则表达式类型而不是字符串。将您的模式替换为/^\d{2}.\d{2}.\d{2}.\d{2}$/
编辑:模型的最终形式应为:
new TextboxQuestion({
key: 'version',
label: 'Release Number',
type: 'text',
required: true,
order: 4,
pattern: /^\d{2}.\d{2}.\d{2}.\d{2}$/ // needed format: ##.##.##.##
})