簡體   English   中英

JavaScript RegExp三部分

[英]JavaScript RegExp Three Parts

我需要JavaScript正則表達式的幫助(很抱歉,我仍在嘗試學習它。)。

我有字符串: value1 value2 (value3 value4) -value5 value6 (三個部分中的每個都可以有無窮大的值。)

我需要分開:

var1 = value1 + ' ' + value2 ...
var2 = value3 + ' ' + value4 ...
var3 = value5 + ' ' + value6 ...

你能幫我嗎? 謝謝!

如果字符串的格式保持為給定格式,則拆分可能是一個主意:

'value1 value2 (value3 value4) -value5 value6'.split(/\s+\(|\)\s+\-/);
//=> ["value1 value2", "value3 value4", "value5 value6"]

由於原始字符串已經包含那些空格分隔符,請嘗試:

/^(.*) \((.*)\) -(.*)$/.exec(str);

它與字符串"anything (anything) -anything"匹配。

它返回一個數組,其中arr[1]arr[2]arr[3]包含三個結果。

請注意,盡管不允許在值中包含特殊字符(例如(-帶有空格),否則不能真正定義格式。

var str1 = "value1 value2 (value3 value4) -value5 value6";

//var parts = str1.match(/^([^(]+)\(\s?([^)]+)\)\s?(.+)$/);
var parts = str1.match(/^([^(]+)\(\s?([^)]+)\)\s?-(.+)$/);

var var1 = parts[1];
var var2 = parts[2];
var var3 = parts[3];

console.log(var1);
console.log(var2);
console.log(var3);

我將首先查找每個部分,然后將每個部分中的值分開以提高效率。 然后,我將它們用一個空格粘在一起。 我使用了很多\\s* ,因為我假設可能存在多個空格(例如注釋行中的空格)。

var str = 'value1 value2 (value3 value4) -value5 value6';
//var str = '  value1    value2 (   value3 value4)   -value5 value6 ';

var pairs = str.match(/^\s*(.+?)\s*\(\s*(.+?)\s*\)\s*(.+?)\s*$/);

values1 = pairs[1].split(/\s+/);
values2 = pairs[2].split(/\s+/);
values3 = pairs[3].split(/\s+/);

console.log('values1:',values1,'-->',values1.join(' '));
console.log('values2:',values2,'-->',values2.join(' '));
console.log('values3:',values3,'-->',values3.join(' '));

RegEx的說明

  • ^字符串開頭
  • \\s*可能的空白
  • (.+?)一個字符組(至少1個字符)
  • \\s*可能的空白
  • \\(開頭括號
  • \\s*可能的空白
  • (.+?)一個字符組(至少1個字符)
  • \\s*可能的空白
  • \\)結束括號
  • \\s*可能的空白
  • (.+?)一個字符組(至少1個字符)
  • \\s*可能的空白
  • $字符串結尾

暫無
暫無

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

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