当用户在输入栏中输入一个术语时,如果该术语与我的json列表中的内容匹配,则将其拆分为数组。例如,如果用户输入类似" st.mp,st.mp,fireball"数组变为["mp",",","mp",",","fireball"]
。还包括逗号,这是有目的的。每个术语都会在我的应用中创建一个图像。
我需要术语" xx"被捕获逗号和" xx"应该分开这些条款。他们应该以同样的方式工作。如果我输入类似" st.mp xx火球"它应该返回["mp","xx","fireball"]
。
现在我的正则表达式是(\w+( \w+)*|\s)
我可以在其中获得带空格的术语(例如,如果我输入"红色火球"它返回["red fireball"]
)我不是确定要添加什么来捕获" xx"。我认为发生的事情就是当我输入像" st.mp xx fireball"这样的术语时。它抓住了整个东西,它与我的json中的任何东西都不匹配。我仍然是正则表达式的新手。我尝试过的事情的范围很广,从仅仅(xx)
到\b(xx)
我只是迷失在甚至尝试的事情上。
答案 0 :(得分:1)
单行演示:
"st.mp xx fireball, with space".split(/(?:(,)\s+|\s+(xx)\s+)/)
// -> ["st.mp", undefined, "xx", "fireball", ",", undefined, "with space"]
// filter undefined out then
您可能在错误的方向上使用.split
:.split
的参数应该是分割符