有没有办法可以简化这个正则表达式?
Posted
技术标签:
【中文标题】有没有办法可以简化这个正则表达式?【英文标题】:Is there a way I can simplify this regex? 【发布时间】:2021-08-28 00:07:49 【问题描述】:我有这个正则表达式来检查文本框值的验证。它可以按我的意愿工作,但我认为可能有更简单的方法。
这是正则表达式:
@"^(?![0-9]+$)(?![0-9- `'-,]+$)(?![- `'-,]+$)[a-zA-Z0-9][a-zA-Z0-9- `'-,]*$"
这是它的作用:
as-d'' 12 3
(允许)
123''123
(不允许)
abc---
(允许)
123--123--123
(不允许)
avsa123
(允许)
''''
(不允许)
允许:
自己写的信 字母和指定的特殊字符 字母和数字 字母、数字和指定的特殊字符不允许:
自己的数字 自行指定特殊字符 指定的特殊字符和数字 只有空格有没有更简单的方法来写这个表达式?
【问题讨论】:
规则可以简化为“必须包含字母”吗? 这就是我的想法,但我还需要指定它也可以允许这些特定字符 【参考方案1】:如果规则可以简化为“必须包含字母”,那么您可以像这样使用正则表达式:
^.*[a-zA-Z].*$
它接受任何字符串,但至少有一个字母字符必须在某处。如果您需要删除特定字符,您可以更改.
。
^[a-zA-Z0-9 /* more characters */ ]*[a-zA-Z][a-zA-Z0-9 /* more characters */ ]*$
【讨论】:
这仅在字符串不以asd'asd
之类的字符开头时才有效。但是如果你做'asd
,那就不允许了
@mikeGear 你的意思是它应该或不应该以特定字符开头?你能具体说明一下吗?
我的意思是,它应该允许'asd
,但它不允许。但是当字符串中的第一个值是字母时,您的正则表达式只允许特殊字符和数字
@mike 如果你在谈论上一个,它允许'asd
,因为正则表达式以.*
开头。 /* more characters */
部分不加想要的字符,下位不接受。
哦,抱歉,我没理解这是什么意思 /* more characters */
以上是关于有没有办法可以简化这个正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章