我有一个大小为11的文本字段,必须使用不同的规则集验证字符串的每个字符。外汇。 :第一个字符只能接受[1-9],第二个字符只能接受某些字母,如[A-z&& [^ SLO]],第三个字符应接受[1-9] [A-Z]。什么是更好的方法,使用验证规则和正则表达式或顶点触发字符串验证?
我尝试编写正则表达式,但不超过5个字符验证。
NOT( REGEX( MBI_No__c , "^[1-9](?![SLIBZ])[A-Z][1-9](?![SLIBZ])[A-Z][A-Z_0-9]") )
这适用于5个字符的验证。以上验证有效,但不确定它是否准确。
答案 0 :(得分:1)
在我看来,使用Apex触发器是更糟糕的选择。它需要至少相同或更多的努力(例如,批量化触发器,确保您没有在更新/插入时执行两次工作等),而不提供真正的好处。
因此,您的验证规则/正则表达式方法看起来没问题。
您可以使用否定前瞻或字符类减法来断言某些字符:
E.g。断言所有小写元音
在Java Apex
[a-z&&[^aeiou]]
可以用PCRE(PHP,R,Perl,Python和JavaScript)编写
(?![aeiou])[a-z]
负向前瞻断言以下字符不是a 小写元音。然后[a-z]匹配一个字母,但不保证 成为元音。见Rexegg
答案 1 :(得分:1)
我最终为所有11个字符NOT( REGEX( MBI_No__c , "^[1-9](?![SLIBZ])[A-Z][1-9](?![SLIBZ])[A-Z][A-Z_0-9][1-9]*$") )
以上正则表达式最多可以使用6个字符串,可以扩展到11个字符。为了测试,我使用了https://regexr.com/