簡體   English   中英

Java正則表達式組

[英]Regex-Groups in Javascript

我在使用Javascript-Regexp時遇到問題。

這是一個非常簡化的正則表達式,它說明了我的問題:

(?:\s(\+\d\w*))|(\w+)

此正則表達式只能匹配不包含禁止字符的字符串(所有不包含單詞字符的字符串)。

唯一的例外是符號+
如果[0-9]在結尾,則允許以該符號開頭的匹配。 +不得字(內出現44+44不是有效的匹配,但+4ad是)

為了僅在開頭允許+,我說過前面必須有一個空格。 但是,我不希望空格成為比賽的一部分。

我使用以下工具測試了正則表達式: http: //regex101.com/#javascript,結果匹配看起來不錯。

該正則表達式有兩個問題:

  • 如果我在JS代碼中使用它,則空格始終是匹配項的一部分
  • 如果+42出現在行首,則不會匹配

我的問題:

  • 正則表達式應如何顯示?
  • 為什么此正則表達式將空格添加到匹配項中?

這是我的JS代碼:

var input =  "+5ad6  +5ad6 sd asd+as +we";
var regexp = /(?:\s(\+\d\w*))|(\w+)/g;
var tokens = input.match(regexp);
console.log(tokens);

正則表達式應如何顯示?

您有多種選擇可以實現自己的目標:

  • 一切都好。 不過,您也可以允許字符串以空格開頭 只需從中獲取捕獲組( tokens[1]tokens[2] )即可,其中不包括空格。
  • 如果您不使用JavaScript,那么回頭看可能會有所幫助。 不幸的是,它不受支持。
  • 要求非字邊界的前+ ,這將使每個\\w前字符+防止比賽:

     /\\B\\+\\d\\w+|\\w+/ 

為什么此正則表達式將空格添加到匹配項中?

因為正則表達式確實匹配空白。 但是,它不會將\\s(\\+\\d\\w+)捕獲的組中

暫無
暫無

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

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