首页 > 解决方案 > 如何将可选字符串组合在一起

问题描述

我需要一个正则表达式来验证
"Optional str1 as string = ''"

"str2 as string"
"str3 as boolean, Optional dtm as date = Now"

所以当"Optional"被使用时必须有一个"="标志
但是"Optional"是可选的

这是我尝试过的:

(Optional\s|)(.*)(\s=\s|)(.*)

这是不对的。它验证了太多。

有什么提示吗?

标签: regexvalidation

解决方案


您可以使用锚点^来断言字符串的开头。

然后匹配字符串,如果它包含 Optional 后跟字符串中的等号,或者使用负前瞻(如果支持)并匹配整行,如果它不包含 Optional 使用交替|

^(?:.*\bOptional\b.*\s=\s.*|(?!.*\bOptional\b).+)

解释

  • ^字符串的开始
  • (?:非捕获组
    • .*\bOptional\b.*\s=\s.*如果它包含 Optional 和空格字符之间的等号,则匹配整行
    • |或者
    • (?!.*\bOptional\b).+如果不包含 Optional,则匹配整行
  • )关闭非捕获组

正则表达式演示


推荐阅读