gpt4 book ai didi

ruby-on-rails - 验证英语和阿拉伯数字的数值条件

转载 作者:行者123 更新时间:2023-12-02 03:11:51 26 4
gpt4 key购买 nike

我正在使用以下代码来验证 Rails 中的数值:

validates :number, :numericality => {:greater_than_or_equal_to => 500}

它运行良好,但后来我添加了正则表达式以允许像这样的阿拉伯数字:

validates :number, :format =>{:with => /[0-9\u0660-\u0669]*/}

此处它接受阿拉伯数字,但条件 greater_than_or_equal_to => 500 仅适用于英文数字,​​我也需要它支持阿拉伯数字。

最佳答案

好吧,这个数字可以定义为[0-9]并结合阿拉伯语,[0-9\u0660-\u0669] .我们要匹配 500最多 999第一的。我们需要合并 [5-9][\u0665-\u0669] -> [5-9\u0665-\u0669]将匹配 59在 ASCII 和阿拉伯符号中。在5-9之后, 可以有 2 个任意数字,所以我们需要追加 [0-9\u0660-\u0669]{2}

接下来,我们需要允许大于 999 的数字, 即 1000和更多。所以,我们需要添加一个替代分支 [0-9\u0660-\u066‌​9]{4,} .

整个结果是

/\A([5-9\u0665-\u0669][0-9\u0660-\u0669]{2}|[0-9\u0660-\u066‌​9]{4,})\z/

在哪里\A匹配字符串的开头,\z匹配字符串的结尾和 (Branch_1|Branch_2)是一个分组结构,可以通过添加 ?: 变成非捕获结构。在初始 ( 之后:

/\A(?:[5-9\u0665-\u0669][0-9\u0660-\u0669]{2}|[0-9\u0660-\u066‌​9]{4,})\z/

参见 regex demo

关于ruby-on-rails - 验证英语和阿拉伯数字的数值条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39592004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com