【问题标题】:Regex to check validation in Django正则表达式检查 Django 中的验证
【发布时间】:2020-05-30 09:46:29
【问题描述】:

我正在尝试在 Django 中编写以下验证代码: “大写字母只能从第一个单词的字母开始或仅当单词中的所有字母都是大写时才允许使用” 我一直这样做到现在,但它失败了,有人可以帮助我吗?

例如:

This is The GOOD day - acceptable
ThIS is THE gOOD day - not acceptable

我的代码:

RegexValidator(
        regex='(^[A-Z][\sa-z0-9]+$)|(^([A-Z]\w*\s*)+$)',
        message='Capital Letters are allowed only as first word letter or only if all letters in word are uppercase',
        code='invalid_capitalisation'
)

【问题讨论】:

  • 你可能只用^[A-Z]检查第一个字符。或者^[A-Z][^A-Z]*$,如果在第一个大写字母之后可以有除大写字母之外的任何字符。
  • 请用一些例子说明你想匹配什么,你不想匹配什么。如果每个单词都以大写字母开头(即标题大小写),你想匹配一个句子吗?还是只希望第一个单词的首字母大写?
  • 我想检查单词中是否使用了大写字母,那么它应该是第一个字符,或者每个字符都应该是大写。例如:这是美好的一天 - 可以接受 这是美好的一天 - 不可接受
  • @Chase 我已经更新了示例
  • 谢谢,@WiktorStribiżew,我昨天收到了关于低代表的通知,我就这么做了!

标签: python django regex


【解决方案1】:

你可以使用

^(?!.*[a-z][A-Z])(?!.*[A-Z][a-z]+[A-Z]).*

regex demo

详情

  • ^ - 字符串开头
  • (?!.*[a-z][A-Z]) - 字符串中任何地方都不允许小写字母后跟大写字母
  • (?!.*[A-Z][a-z]+[A-Z]) - 不允许大写字母后跟任何 1 个或多个小写字母后跟大写字母在字符串中的任何位置
  • .* - 除换行符之外的任何 0 个或多个字符,尽可能多

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多