验证特定格式

问题描述 投票:0回答:2

我正在考虑验证我的程序的输入应具有以下格式:XXXXXXXX-Y

  • X
    是数字
  • Y
    可以是数字或字母
  • -
    自动书写

所以这就是原因。 输入类型

"Number"
不适用于这种情况。

https://es.wikipedia.org/wiki/Rol_%C3%9Anico_Tributario

javascript regex sapui5
2个回答
3
投票

这是

sap.m.MaskInput
[API] 的典型用例。使用 MaskInput 消除了(在前端)验证的需要,因为它甚至不允许输入无效字符,这也提高了用户体验。

当然,你也可以继续使用

sap.m.Input
。在这种情况下,您可以使用类型
sap.ui.model.(odata.)type.String
和等待正则表达式的约束
search
。错误的输入不会传递到绑定模型。

这是展示这两个示例的演示:

globalThis.onUI5Init = () => sap.ui.require([
  "sap/ui/core/mvc/XMLView",
  "sap/ui/model/json/JSONModel",
  "sap/ui/core/Messaging",
], async (XMLView, JSONModel, Messaging) => {
  "use strict";
  const control = await XMLView.create({
    definition: `<mvc:View xmlns:mvc="sap.ui.core.mvc"
      xmlns:form="sap.ui.layout.form"
      xmlns="sap.m"
      height="100%"
      displayBlock="true"
    >
      <App>
        <Page
          class="sapUiNoContentPadding"
          title="Allowing Specific Format Only"
        >
          <MessageStrip
            class="sapUiTinyMarginTop sapUiTinyMarginBeginEnd"
            text="Allowed sequence: &lt;em>XXXXXXXX-Y&lt;/em>"
            showIcon="true"
            enableFormattedText="true"
          />
          <form:SimpleForm
            editable="true"
            layout="ResponsiveGridLayout"
            labelSpanM="5"
          >
            <Label text="Restricting inputs via MaskInput" />
            <MaskInput mask="99.999.999-Y">
              <rules>
                <MaskInputRule
                  maskFormatSymbol="Y"
                  regex="[a-zA-Z0-9]"
                />
              </rules>
            </MaskInput>
            <Label text="Validating inputs via binding type" />
            <Input xmlns:core="sap.ui.core"
              core:require="{ StringType: 'sap/ui/model/type/String' }"
              value="{
                path: '/value',
                type: 'StringType',
                constraints: {
                  search: '[0-9]{8,}-[a-zA-Z]'
                }
              }"
            />
          </form:SimpleForm>
        </Page>
      </App>
    </mvc:View>`,
    models: new JSONModel({ value: "" }),
  });
  Messaging.registerObject(control, true);
  control.placeAt("content");
});
<script id="sap-ui-bootstrap"
  src="https://sdk.openui5.org/resources/sap-ui-core.js"
  data-sap-ui-libs="sap.ui.core,sap.m"
  data-sap-ui-onInit="onUI5Init"
  data-sap-ui-async="true"
  data-sap-ui-compatVersion="edge"
  data-sap-ui-excludeJQueryCompat="true"
  data-sap-ui-xx-waitForTheme="init"
></script>
<body id="content" class="sapUiBody sapUiSizeCompact"></body>

PS:您可能想知道为什么

"9"
mask
定义中起作用。 默认情况下,MaskInput 包含
rule
/[0-9]/
具有
maskFormatSymbol
"9"


1
投票

您可以使用正则表达式来验证

var pattern = \[0-9]{8,}-[a-zA-Z]\;
return pattern.test('12345678-A'); //will return true

[0-9]{8,}
- 前 8 个字符的数字
-
比赛-
[a-zA-Z]
- 一个字符大写或小写

© www.soinside.com 2019 - 2024. All rights reserved.