簡體   English   中英

在下划線,星號和波浪號之間匹配字符串的正則表達式

[英]Regex that match strings in between underscores, asterisks & tilde

我結賬的是這個_(.*?)_

我應該使用什么正則表達式來獲取下划線之間的字符串的每個實例,但不應該是字符串的子字符串(檢查test3),也不應該將它們放在換行符中(檢查test4)

var string = "_test1 test2_ test_3_ _\n test4_ _test5_"

正則表達式應該只獲得_test1 test2__test5_

注意:單詞test的任何字符/字符串都沒有關系

如果可以保證每個下划線對之間都由一個空格字符分隔(因此,兩個下划線不會相鄰),那么此正則表達式將起作用: \\b_([\\w\\s]+?)_\\b

要匹配您需要的3種情況,請使用以下正則表達式: (?:\\b|\\s|^)[_*~]([\\w\\s]+?)[_*~](?:\\s|$)

您可以使用此正則表達式

(?:^| )(_(?:[\w ]+?)_|([*~])(?:[\w ]+?)\2)(?= |$)

正則表達式演示

JS演示

 var re = /(?:^| )(_(?:[\\w ]+?)_|([*~])(?:[\\w ]+?)\\2)(?= |$)/g; var str = "_test1 test2_ test_3_ _\\n test4_ *test5* test*3* _asdf_ _ghjkl_ _mno_"; document.writeln("<pre>" + str.match(re) + "</br>" + "</pre>"); 

為了從中獲得所需的值

test1 test2 test_3_ \\ n test4 test5

采用

_test[^_\n]+_

下面的一個也可以。

^_([^_]+?)_|_([^_]+?)_$

text.match(/^_([^_]+?)_|_([^_]+?)_$/g);

http://regexr.com/3df3m

暫無
暫無

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

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