Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript正则表达式多行选择器代码_Javascript_Regex_Parsing_Multiline_Bbcode - Fatal编程技术网

javascript正则表达式多行选择器代码

javascript正则表达式多行选择器代码,javascript,regex,parsing,multiline,bbcode,Javascript,Regex,Parsing,Multiline,Bbcode,我在mac book air上使用最新版本的chrome浏览器和最新的操作系统。我正在尝试用javascript创建BBcode解析器。我可以很容易地解析一行代码,比如[b]a[/b],但是当它是多行代码时,它找不到它。我做了一些研究,发现javascript在多行(m)标记上存在一些问题。我尝试了一些替代解决方案,但似乎没有一个奏效。以下是我的一些尝试: var reg = new RegExp('\\[b\](.+)\\[\/b\]','igm'); var reg = new RegExp

我在mac book air上使用最新版本的chrome浏览器和最新的操作系统。我正在尝试用javascript创建BBcode解析器。我可以很容易地解析一行代码,比如[b]a[/b],但是当它是多行代码时,它找不到它。我做了一些研究,发现javascript在多行(m)标记上存在一些问题。我尝试了一些替代解决方案,但似乎没有一个奏效。以下是我的一些尝试:

var reg = new RegExp('\\[b\](.+)\\[\/b\]','igm');
var reg = new RegExp('\\[b\]([\s\S]+)\\[\/b\]','ig');
var reg = new RegExp('\\[b\]([^]+)\\[\/b\]','ig');
var reg = new RegExp('\\[b\]([\n|\r|.]+)\\[\/b\]','ig');

任何帮助都将不胜感激

谢谢

这必须有效:

 var reg = new RegExp('\\[b\\]([\\s\\S]+?)\\[/b\\]', 'ig');
或者更好:

var reg = new RegExp('\\[b]([\\s\\S]+?)\\[/b]', 'ig');

既然你不必逃避关闭方括号,我想问题是+太贪婪了。。他的JFIDLE示例在一行中显示多个b标记。否则,我同意这一点work@Denomales:否问题是您必须使用此语法在java中双重转义all!但你是对的,懒散的量词更好,因为你是对的。我试过了,如果有多个标签,它只会选择第一个开始的标签和最后一个结束的标签,忽略中间的所有内容,这对有多个标签的行更有效。我甚至没有注意到双转义斜杠+1或偶数
/\[b]([\s\s]+?)\[\/b]/ig
。我推荐
/\[b]([^]+?)\[\/b]/ig
,但这在一些较旧的IE版本中不起作用。