编写正则表达式以使用javascript从字符串中删除st、nd、rd或th之前的空格

编写正则表达式以使用javascript从字符串中删除st、nd、rd或th之前的空格,javascript,regex,Javascript,Regex,我有下面的字符串 原始字符串 "1 st-May-2014" "2 nd-May-2014" "3 rd-May-2014" "14 th-May-2014" 输出应为 "1 st-May-2014" "2 nd-May-2014" "3 rd-May-2014" "14 th-May-2014

我有下面的字符串 原始字符串

"1 st-May-2014"                
"2 nd-May-2014"                 
"3 rd-May-2014"                 
"14 th-May-2014" 
输出应为

"1 st-May-2014"                
"2 nd-May-2014"                 
"3 rd-May-2014"                 
"14 th-May-2014" 
"1st-May-2014"  
"2nd-May-2014"
"3rd-May-2014"
"14th-May-2014"
现在,我想使用JavaScript中的正则表达式从上面的字符串中删除st、nd、rd和th之前的空格。

我的建议如下:

"1 st-May-2014"                
"2 nd-May-2014"                 
"3 rd-May-2014"                 
"14 th-May-2014" 
result = subject.replace(/\s+(?=(?:st|nd|rd|th)\b)/g, "");
说明:

"1 st-May-2014"                
"2 nd-May-2014"                 
"3 rd-May-2014"                 
"14 th-May-2014" 
\s+#匹配空白
(?=#如果后面可以匹配以下文本:
(?:st | nd | rd | th)#四个“单词”之一
\b#在那里结束(以免与“4块石头”相配)
)#结束先行断言

我想,你需要这个:

"1 st-May-2014"                
"2 nd-May-2014"                 
"3 rd-May-2014"                 
"14 th-May-2014" 
result = subject.replace(/^(\d+)\s+(.*)$/gm,"$1$2");

迅速回答与接受的解决方案!我的投票+1@imdadhusen考虑一下我的回答,提姆,你是怎么解释的?有网站吗?太棒了!!!完美的解释来理解它的logic@AmitJoki:不,全是手写的:)接受它
替换(“”,”)
还不够吗?是什么阻止了你?你试过什么?