Js正则 多行匹配有关问题
Js正则 多行匹配问题
如果是这样的字符串,那么<?JS ...JS?>中的字符串匹配成功。
但是,如果<?JS ....\r\n ....JS?>中出现了换行,用上面的方法就不行了
在mode中加入m也没有效果,请问这是为什么?
相同的功能用java就可以实现:
------解决方案--------------------
如果是这样的字符串,那么<?JS ...JS?>中的字符串匹配成功。
- JScript code
var test = "<span>123123<?JS1231231</span>2JS?>123123<?JS12JS?><span>3</span><?JS13JS?>"; var reg = new RegExp("<\\?JS(.*?)JS\\?>", "g"); test.replace(reg, function(element) { alert(element); });
但是,如果<?JS ....\r\n ....JS?>中出现了换行,用上面的方法就不行了
- JScript code
var test = "<span>123123<?JS123123\n1</span>2JS?>123123<?JS12JS?>\r\n<span>3</span><?JS \n13JS?>"; var reg = new RegExp("<\\?JS(.*?)JS\\?>", "g"); test.replace(reg, function(element) { alert(element); });
在mode中加入m也没有效果,请问这是为什么?
相同的功能用java就可以实现:
- Java code
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String test = "<span>123123<?JS123123\r\n1</span>2JS?>123123<?JS12JS?>\r\n<span>3</span><?JS \n13JS?>"; Pattern pattern = Pattern.compile("<\\?JS.*?JS\\?>", Pattern.DOTALL); Matcher matcher = pattern.matcher(test); while(matcher.find()) { System.out.println(matcher.group(0).trim()); } } }
------解决方案--------------------
- JScript code
var reg = new RegExp("<\\?JS([\\S\\s]*?)JS\\?>", "g");
------解决方案--------------------
------解决方案--------------------
var reg = new RegExp("<\\?JS([\d\D]*?)JS\\?>", "g");