簡體   English   中英

Javascript不會使用正則表達式進行拆分

[英]Javascript won't split using regex

自從我開始寫這個問題以來,我想我已經找到了每個問題的答案,但我認為無論如何我都會發帖,因為它可能對其他人有用,更多的澄清可能會有所幫助。

我試圖使用帶有javascript函數拆分的前瞻性的正則表達式。 由於某種原因,即使在我調用匹配時找到匹配項,它也不會拆分字符串。 我原本以為問題來自於我的正則表達式中使用前瞻。 這是一個簡化的例子:

不起作用:

"aaaaBaaaa".split("(?=B).");

作品:

"aaaaBaaaa".match("(?=B).");

問題似乎是在拆分示例中,傳遞的字符串未被解釋為正則表達式。 使用正斜杠而不是引號似乎可以解決問題。

"aaaaBaaaa".split(/(?=B)./);

我用以下愚蠢的例子證實了我的理論:

"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");

有沒有其他人認為匹配函數假設你有一個正則表達式,而split函數沒有?

String.split接受字符串或正則表達式作為其第一個參數。 String.match方法只接受正則表達式。

我想象String.match會嘗試使用傳遞的任何東西; 因此,如果您傳遞一個字符串,它會將其解釋為正則表達式。 String.split方法沒有這樣做的String.split ,因為它可以接受正則表達式和字符串; 在這種情況下,猜測是愚蠢的。


編輯 :(來自:“JavaScript:權威指南”)

String.match需要使用正則表達式。 傳遞的參數需要是一個RegExp對象,它指定要匹配的模式。 如果此參數不是RegExp ,則首先通過將其傳遞給RegExp()構造函數將其轉換為1。

如果我沒記錯(這里我可能會非常錯誤),在正則規則引擎廣泛使用之前,split方法是在javascript中實現的,因此它可能是為了向后兼容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM