gpt4 book ai didi

ruby - 使用正则表达式识别格式化数字

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:21 30 4
gpt4 key购买 nike

1      #valid
1,5 #valid
1,5, #invalid
,1,5 #invalid
1,,5 #invalid
#'nothing' is also invalid

逗号分隔的数字个数可以任意。

我正在尝试使用正则表达式来执行此操作。到目前为止,这是我尝试过的方法,但没有一个奏效:

"1,2,," =~ /^[[\d]+[\,]?]+$/      #returned 0
"1,2,," =~ /^[\d\,]+$/ #returned 0
"1,2,," =~ /^[[\d]+[\,]{,1}]+$/ #returned 0
"1,2,," =~ /^[[\d]+\,]+$/ #returned 0

显然,我需要表达式来识别 1,2,, 是无效的,但它们都返回了 0 :(

最佳答案

你的模式并没有真正起作用,因为:

  • ^[[\d]+[\,]?]+$ - 匹配包含一个或多个数字的行,+, ,, ? 字符(并匹配上面的所有字符串,但最后一个空字符串)
  • ^[\d\,]+$ - 匹配包含 1+ 个数字或 , 符号的行
  • ^[[\d]+[\,]{,1}]+$ - 匹配包含一个或多个数字的行,+, {} 字符
  • ^[[\d]+\,]+$ - 匹配包含一个或多个数字、+, 的行> 字符。

基本上,问题在于您尝试依赖字符类,而您需要分组构造,(...).

逗号分隔的整数可以用

验证
/\A\d+(?:,\d+)*\z/

参见 Rubular demo .

详细信息:

  • \A - 字符串的开始
  • \d+ - 1+ 位
  • (?:,\d+)* - 零次或多次出现:
    • , - 逗号
    • \d+ - 1+ 位
  • \z - 字符串结尾。

关于ruby - 使用正则表达式识别格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42056930/

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