分隔换行符和逗号和分号

ssc*_*rus 4 regex ruby-on-rails ruby-on-rails-3

我想从用户输入一个textarea值的人名,并将它们分成数组中的项目.

从理论上可能的输入:

people = "Abby Andrews, Ben \r\nCharlie Connors    Daphne D., Ernie E. Engels; Faye\r\n\r\nGary Gomez"

array = people.split('??')
Run Code Online (Sandbox Code Playgroud)

如何构建正则表达式以成功分裂像上面这样的疯狂链?

应分开:

  • \r,\n,\r\n
  • 逗号(,)或分号(;)
  • 多个空间

不应拆分:

  • 期间(这可能是某人的初始)
  • 单个空格(可以分隔名字和姓氏)

我尝试过people.split(/\r\n,;/),people.split(/,;\r\n/)以及它们的组合,但没有产生结果.

Tim*_*ker 11

尝试

array = people.split(
    /\s*[,;]\s* # comma or semicolon, optionally surrounded by whitespace
    |           # or
    \s{2,}      # two or more whitespace characters
    |           # or
    [\r\n]+     # any number of newline characters
    /x)
Run Code Online (Sandbox Code Playgroud)