[英]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.