2016-12-02 374 views
-5

使用http://www.regexr.com/试图获得仅匹配字母,空格和标点符号的正则表达式。例如,我有一堆数据,如下所示:正则表达式不允许使用数字

1. "Ever stop to think, and forget to start again?" - Some Guy 

等等。我如何使用正则表达式来抓取除最初的数字和句点之外的所有内容?

我的正则表达式现在是如下,但似乎抢号:

^(\s+|\d+|\w+|[^\d\s\w])+$ 
+0

Unicode字母呢? –

+0

没有太多的正则表达式经验,所以我不太确定我遵循。 – user1721449

+0

您链接的网站上有一个cheatsheet ...使用它。 – Cerbrus

回答

1

只需更换数字和期开出的字符串:

var str = '1. "Ever stop to think, and forget to start again?" - Some Guy'; 
 

 
console.log(str.replace(/^\d+\. /, ''));

正则表达式,\d+\.正在寻找:

  • 在字符串的开头:^
  • 1个或更多数字:\d+
  • 后跟一个句点:\.
  • 后跟一个空格:

然后,它取代了匹配部,1.,用一个空字符串。

+0

我正在使用遵循JS语法的刮板,但除此之外不允许其他任何东西。 – user1721449

+0

@ user1721449:这意味着你不能使用JS? – Cerbrus

+1

不是以标准的方式,我只将它标记为JS,因为它使用的语法如此。 – user1721449

0

随着replacestr.replace(/^[0-9. ]+(.*)/, '$1')

Look-behind在Javascript中不被支持,所以这不能用匹配来完成(并且在支持语言的时候,模式“在后面看”通常不能具有可变长度)。但是你可以匹配".*[ ].*之类的东西。

0

你可以只换你捕获组周围的一切除了你行的开始,其中应包括具体的模式,以排除..所以:

^\d+\.\s(.*)$

使用应你的空间特别是在返回后的一切后面的数字和句点,但只有在那些在