0

我一直在尝试编写一个匹配数字字符串和换行符的正则表达式,例如:

"47832748973284793\r\n321321321321\r\n423423432432423432".match(/\A[+-]?\d+?(_?\d+)*(\.\d+e?\d*)?\Z/) == nil ? false : true 

它会因为 '\r\n' 而返回 false,事实上,它也应该匹配 '\r\n'。

有人可以帮我实现它吗?

4

1 回答 1

0

所以你的模式定义了一个数字,那么你必须添加“特殊情况”作为以下组,但另外还有与原始模式不同的部分,\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
于 2013-09-19T06:35:49.667 回答