0

我对这个问题感到疯狂,我尝试从以下字符串中提取“拉丁”句子(比原始字符串短):

My Name is Yoann

ホームインサイト最新のインサイト運用チームからの最新のマーケ
ットアップデート、運用アップデートマーケットアップデート市場環境情報に関す
るレポート投資アップデート投資環境情報レポート及び出版物運用戦略運用戦略
ファーストステート・スチュワートアジア・パシフィック、グローバル・エマージング・マーケット、ワールドワイド株式

Hello World

这是正则表达式:

...
//text=My Name is Yoann...
pattern = new RegExp("([A-Za-z]+[\s]?[A-Za-z])+", "g");
results= text.match(pattern);

当我运行它时,我得到:

//results[0]="My"
//results[1]="Name"
//results[2]="is"
//results[3]="Yoann"
//...

单词在“空格”上分开。当我尝试使用http://regexlib.com(JS 客户端引擎)测试器或http://regexpal.com时,结果是:

//results[0]="My Name is Yoann"
//results[1]="Hello World"

所以我不明白我在代码中做错了什么,但我没有得到相同的结果。

谢谢你的帮助。

约安

4

1 回答 1

4
> "foo bar".match(new RegExp("[a-z]\s[a-z]"))
null
> "foo bar".match(new RegExp("[a-z]\\s[a-z]"))
["o b"]

使用 RegExp 构造函数时,将斜杠加倍。更好的是,使用正则表达式文字,例如

/[A-Z][A-Z\s]*[A-Z]|[A-Z]/gi

http://jsfiddle.net/4PdJh/1

于 2013-09-10T07:49:44.237 回答