我试图确保在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或本质结尾
答案 0 :(得分:1)
要匹配以ess
,essence
或sports
结尾的字符串,您可以使用
$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
,后跟字符串末尾。