ng-pattern验证最后一个字母必须以特定的字母angularjs结尾

时间:2018-10-02 12:20:54

标签: javascript angularjs regex

我试图确保在angularjs文本字段中,字段的最后一个字母必须以特定字母结尾。我创建了一个函数,用于处理如图所示的模式验证

from pathlib import Path
import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

# Assuming \Documents\Email Reader is the directory containg files
for p in Path(r'C:\Users\XY\Documents\Email Reader').iterdir():
    if p.is_file() and p.suffix == '.msg':
        msg = outlook.OpenSharedItem(p)
        print(msg.Body)

我正在以下字段中使用该模式。

$scope.validatePattern = function () {
    var typeSelected = $scope.sports_type;
    if (typeSelected == 'Sports') { //the user selected sports from the above model
        $scope.pointPattern = "^[\s\w]+[^(ess|essence)]$";
    }
}

为什么ng模式无法验证字母必须以ess或本质结尾

2 个答案:

答案 0 :(得分:1)

要匹配以essessencesports结尾的字符串,您可以使用

$scope.pointPattern = /(?:ess(?:ence)?|sports)$/;

请注意,您必须使用RegExp变量类型。它等于$scope.pointPattern = new RegExp("(?:ess(?:ence)?|sports)$");,如果您打算匹配输入字符串中的子字符串,则必须使用它。

如果您打算使用字符串模式,则需要确保它与整个输入字符串匹配:

$scope.pointPattern = "^.*(?:ess(?:ence)?|sports)$";

模式详细信息

  • ^-字符串的开头
  • .*-除换行符以外的任何0+字符
  • (?:ess(?:ence)?|sports)-匹配non-capturing group
    • ess(?:ence)?-ess后跟可选的ence子字符串
    • |-或
    • sports-一个sports子字符串
  • $-字符串的结尾。

答案 1 :(得分:0)

您的问题是[^(ess|essence)]是一个否定的字符类,它将匹配一个不是(,e,s,|,n,c或)之一的字符,而且您正在看的末尾字符串,因此您可以删除^[\s\w]+部分。

我假设正则表达式匹配有效输入,因此您需要将其重写为

$scope.pointPattern = "ess(?:ence)?$";

此匹配ess,可能后跟ence,后跟字符串末尾。