鉴于以下文字,我想返回一个包含以下格式1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN- 1.1
的所有文本行的数组,即使它实际上在多行中被破坏,也应该输入一行
正则表达式:
str.match(/\d{1,2}.SSRDOCSYYHK1\/\/\/\/\/.+?\d\.\d/g)
全文
var str= "A-CA25592185
A-ERNONREF/CHGFEEPLUSFAREDIF/CXL BY FLT TIME NOVALUE
TKG FAX-NOT PRICED FARE TYPE EX
FOP- 1.CA
G- 1.SSRDOCSWSHK1/////25MAY55/M//YOUNG/LANDON/KWAN - 1.
1
)>MD
2.SSRPSPTYYHK1///25AUG52/M- 1.1
3.SSRDOCSWSHK1/////25AUG52/F//YOUNG/LILY/LIMKUO - 2.1
4.SSRPSPTYYHK1///25AUG52/F- 2.1
5.SSRDOCSWSHK1/////25AUG52/F//YOUNG/ANDREA/LAUREN - 3.1
6.SSRPSPTYYHK1///25AUG52/F- 3.1
7.SSRDOCSWSHK1/////17MAR93/M//YOUNG/ETHAN/WESLEY - 4.1
8.SSRPSPTYYHK1///25AUG52/M- 4.1
9.SSRDOCSWSHK1/////23NOV96/M//YOUNG/WINSTON/JEREMY - 5.1
10.SSRPSPTYYHK1///25AUG52/M- 5.1
11.SSRDOCSYYHK1/////25MAY55/M//YOUNG/LANDON/KWAN - 1.
1
12.SSRDOCSYYHK1/////04MAR59/F//YOUNG/LILY/LIMKUO - 2.1
13.SSRDOCSYYHK1/////25AUG52/F//YOUNG/ANDREA/LAUREN - 3.1
)>MD
7.SSRDOCSWSHK1/////25AUG52/M//YOUNG/ETHAN/WESLEY - 4.1
8.SSRPSPTYYHK1///25AUG52/M- 4.1
9.SSRDOCSWSHK1/////25AUG52/M//YOUNG/WINSTON/JEREMY - 5.1
10.SSRPSPTYYHK1///25AUG52/M- 5.1
11.SSRDOCSYYHK1/////25MAY55/M//YOUNG/LANDON/KWAN - 1.
1
12.SSRDOCSYYHK1/////25AUG52/F//YOUNG/LILY/LIMKUO - 2.1
13.SSRDOCSYYHK1/////25AUG52/F//YOUNG/ANDREA/LAUREN - 3.1
14.SSRDOCSYYHK1/////25AUG52/M//YOUNG/ETHAN/WESLEY - 4.1
15.SSRDOCSYYHK1/////25AUG52/M//YOUNG/WINSTON/JEREMY - 5.1
**** ITEMS SUPPRESSED ****/DR"
我希望有一个包含所有匹配项的数组,但第11行的两个实例不匹配,因为以下任何一种方式都可能发生换行,并且目前不会匹配:
var str="1.SSRDOCSYYHK1/////25AUG52/M//
YOUNG/LANDON/KWAN- 1.1"
var str="1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN- 1.
1"
var str="1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN- 1
.1"
var str="1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN-
1.1"
var str="1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN
- 1.1"
在上述所有情况下,我如何告诉此RegExp仍然匹配?
我确实尝试str.match(/\d{1,2}.SSRDOCSYYHK1\/\/\/\/\/.+?\d\.\d/m)
没有运气
这是我得到的数组:
答案 0 :(得分:1)
如果它可以在任何地方被破坏,不仅在DOT
匹配中,\s
技巧将无效。
我认为有一种方法可以忽略javascript正则表达式(或任何其他引擎,实际上)的换行符。
您最好的选择是在匹配前删除所有换行符,如下所示:
str = str.replace(/(\r\n|\n|\r)/gm,"");
然后你.match
答案 1 :(得分:1)
确定。低于regular
工作1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN- 1.1
[0-1]\.[A-Z]+[0-1]\/\/\/\/\/[0-9]+[A-Z]+[0-9]+\/[A-Z]\/\/[A-Z]+\/[A-Z]+\/[A-Z]+\-\s[0-1]\.[0-1]
它适用于:
1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN- 1.
1
[0-1]\.[A-Z]+[0-1]\/\/\/\/\/[0-9]+[A-Z]+[0-9]+\/[A-Z]\/\/[A-Z]+\/[A-Z]+\/[A-Z]+\-\s[0-1]\.\n[0-1]
它适用于:
1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN- 1
.1
[0-1]\.[A-Z]+[0-1]\/\/\/\/\/[0-9]+[A-Z]+[0-9]+\/[A-Z]\/\/[A-Z]+\/[A-Z]+\/[A-Z]+\-\s[0-1]\n\.[0-1]
它适用于:
1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN-
1.1
[0-1]\.[A-Z]+[0-1]\/\/\/\/\/[0-9]+[A-Z]+[0-9]+\/[A-Z]\/\/[A-Z]+\/[A-Z]+\/[A-Z]+\-\n[0-1]\.[0-1]
它适用于:
1.SSRDOCSYYHK1/////25AUG52/M//YOUNG/LANDON/KWAN
- 1.1
[0-1]\.[A-Z]+[0-1]\/\/\/\/\/[0-9]+[A-Z]+[0-9]+\/[A-Z]\/\/[A-Z]+\/[A-Z]+\/[A-Z]+\n\-\s[0-1]\.[0-1]
现在你应该定义嵌套的if和else .....(条件语句)
好看。答案 2 :(得分:0)
Javascript中的DOT与新行不匹配,遗憾的是JS regex引擎中没有DOTALL开关。
但是,作为一种解决方法,您可以将[\s\S]
用于DOT,并在新行中匹配正则表达式。
以下正则表达式适合您:
var arr = str.match(/\d{1,2}\.SSRDOCSYYHK1\/{3,5}[\s\S]+?\d\.\d/g);