XPages validateConstraint正则表达式在web上的行为奇怪

XPages validateConstraint正则表达式在web上的行为奇怪,xpages,lotus-domino,Xpages,Lotus Domino,我有一个输入字段email1,我想用正则表达式进行验证。当我在web上加载xpage时,它会在现有反斜杠的前面加上反斜杠(我想我应该在代码中这样做)。它还用我认为是unicode的东西取代了非字母数字 <xp:td> <xp:inputText value="#{document1.email}" id="email1" required="true" styleClass="form-control"> <xp:this.attrs>

我有一个输入字段email1,我想用正则表达式进行验证。当我在web上加载xpage时,它会在现有反斜杠的前面加上反斜杠(我想我应该在代码中这样做)。它还用我认为是unicode的东西取代了非字母数字

<xp:td>
  <xp:inputText value="#{document1.email}" id="email1"
       required="true" styleClass="form-control">
    <xp:this.attrs>
      <xp:attr name="placeholder"
        value="Enter your email address">
      </xp:attr>
    </xp:this.attrs>
    <xp:this.validators>
      <xp:validateRequired
        message="Email is required">
      </xp:validateRequired>
      <xp:validateConstraint
        message="email not valid">
          <xp:this.regex><![CDATA[/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i]]></xp:this.regex>
      </xp:validateConstraint>
    </xp:this.validators>
  </xp:inputText>
</xp:td>
我尝试过使用两种形式的正则表达式值,使用静态值和计算值,但都失败了

<xp:td>
  <xp:inputText value="#{document1.email}" id="email1"
       required="true" styleClass="form-control">
    <xp:this.attrs>
      <xp:attr name="placeholder"
        value="Enter your email address">
      </xp:attr>
    </xp:this.attrs>
    <xp:this.validators>
      <xp:validateRequired
        message="Email is required">
      </xp:validateRequired>
      <xp:validateConstraint
        message="email not valid">
          <xp:this.regex><![CDATA[/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i]]></xp:this.regex>
      </xp:validateConstraint>
    </xp:this.validators>
  </xp:inputText>
</xp:td>
<xp:this.regex><![CDATA[#{javascript:/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i}]]></xp:this.regex>

有人能看出我做错了什么,并给我指出正确的方向吗

删除正则表达式末尾的前导“/”和“/i”。那就行了

<xp:td>
  <xp:inputText value="#{document1.email}" id="email1"
       required="true" styleClass="form-control">
    <xp:this.attrs>
      <xp:attr name="placeholder"
        value="Enter your email address">
      </xp:attr>
    </xp:this.attrs>
    <xp:this.validators>
      <xp:validateRequired
        message="Email is required">
      </xp:validateRequired>
      <xp:validateConstraint
        message="email not valid">
          <xp:this.regex><![CDATA[/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i]]></xp:this.regex>
      </xp:validateConstraint>
    </xp:this.validators>
  </xp:inputText>
</xp:td>
<xp:this.regex><![CDATA[^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$]]></xp:this.regex>

前导“/”已经包含在内部,不幸的是,像“/i”(不区分大小写的匹配)这样的修饰符似乎不起作用

<xp:td>
  <xp:inputText value="#{document1.email}" id="email1"
       required="true" styleClass="form-control">
    <xp:this.attrs>
      <xp:attr name="placeholder"
        value="Enter your email address">
      </xp:attr>
    </xp:this.attrs>
    <xp:this.validators>
      <xp:validateRequired
        message="Email is required">
      </xp:validateRequired>
      <xp:validateConstraint
        message="email not valid">
          <xp:this.regex><![CDATA[/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i]]></xp:this.regex>
      </xp:validateConstraint>
    </xp:this.validators>
  </xp:inputText>
</xp:td>
不要担心渲染JavaScript代码中的双反斜杠和unicode字符。JavaScript将它们解释为一个反斜杠和原始字符

<xp:td>
  <xp:inputText value="#{document1.email}" id="email1"
       required="true" styleClass="form-control">
    <xp:this.attrs>
      <xp:attr name="placeholder"
        value="Enter your email address">
      </xp:attr>
    </xp:this.attrs>
    <xp:this.validators>
      <xp:validateRequired
        message="Email is required">
      </xp:validateRequired>
      <xp:validateConstraint
        message="email not valid">
          <xp:this.regex><![CDATA[/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i]]></xp:this.regex>
      </xp:validateConstraint>
    </xp:this.validators>
  </xp:inputText>
</xp:td>