我一直在尝试编写一个匹配数字字符串和换行符的正则表达式,例如:
"47832748973284793\r\n321321321321\r\n423423432432423432".match(/\A[+-]?\d+?(_?\d+)*(\.\d+e?\d*)?\Z/) == nil ? false : true
它会因为 '\r\n' 而返回 false,事实上,它也应该匹配 '\r\n'。
有人可以帮我实现它吗?
我一直在尝试编写一个匹配数字字符串和换行符的正则表达式,例如:
"47832748973284793\r\n321321321321\r\n423423432432423432".match(/\A[+-]?\d+?(_?\d+)*(\.\d+e?\d*)?\Z/) == nil ? false : true
它会因为 '\r\n' 而返回 false,事实上,它也应该匹配 '\r\n'。
有人可以帮我实现它吗?
所以你的模式定义了一个数字,那么你必须添加“特殊情况”作为以下组,但另外还有与原始模式不同的部分,\r\n
"47832748973284793\r\n321321321321\r\n423423432432423432".match(/\A[+-]?\d+?(_?\d+)*(\.\d+e?\d*)?(\r\n[+-]?\d+?(_?\d+)*(\.\d+e?\d*)?)*\Z/) == nil ? false : true
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
并让该特殊部分重复 0 次或更多次。
打印出来:
irb(main):005:0> text
=> "47832748973284793\r\n321321321321\r\n423423432432423432"
irb(main):007:0> text.match(/\A[+-]?\d+?(_?\d+)*(\.\d+e?\d*)?(\r\n[+-]?\d+?(_?\d+)*(\.\d+e?\d*)?)*\Z/) == nil ? false : true
=> true