小编Mic*_*sen的帖子

如何在JavaScript正则表达式中找到组的索引匹配?

当我写一个正则表达式,如:

var m = /(s+).*?(l)[^l]*?(o+)/.exec("this is hello to you");
console.log(m);
Run Code Online (Sandbox Code Playgroud)

我得到一个包含以下内容的匹配对象:

{
  0: "s is hello",
  1: "s",
  2: "l",
  3: "o",
  index: 3,
  input: "this is hello to you"
}
Run Code Online (Sandbox Code Playgroud)

我知道整个比赛的索引来自该index属性,但我还需要知道匹配的组的开始和结束.使用简单的搜索将无法正常工作.在这个例子中,它将找到第一个'l'而不是在组中找到的那个.

有没有办法获得匹配组的偏移量?

javascript regex

17
推荐指数
2
解决办法
9860
查看次数

如何设置跨度背景颜色,使其在整个行中为背景着色,如div中所示(显示:块;不是选项)

我需要在pre-element中设置一些文本样式.为此,我使用这样的内联span-element:

<pre>
some text <span style="background-color:#ddd;">and some text
with a different background</span> and some more text
</pre>
Run Code Online (Sandbox Code Playgroud)

然后渲染html,仅在文本下方更改span-elements背景.

是否有可能使背景颜色延伸到整个线条而不将显示更改为块或内联块.

或者有没有办法用javascript实现这一目标?

html javascript css

10
推荐指数
2
解决办法
5万
查看次数

并发访问共享阵列是Node.js中的一个问题

节点处理事件如何?一个当时,还是并发?

我需要知道,如果要同时访问共享数组,如下例所示:

var ws          = require("./ws.js"),
    connections = [];

ws.createServer(function( socket ){

  // add to connection array
  socket.on('connect', function(){
    connections.push(socket);
  });

  // remove from connection array
  socket.on('close', function(){
    var i = connections.indexOf(socket);
    connections.splice(i,1);
  });

}).listen(8000);
Run Code Online (Sandbox Code Playgroud)

当客户端连接时,其套接字被推送到数组.当连接关闭时,我想从连接数组中删除它.

但是,在其他语言中,这可能会导致并发问题.

FX.如果两个连接同时关闭:

  • 连接A在索引4中查找其套接字
  • 连接B在索引5中找到其套接字
  • 连接A从索引4中删除自身
  • 连接B从索引5中删除自己(但它现在是索引4)

这会是一个问题,还是我可以假设一次只处理一个回调?

node.js

6
推荐指数
1
解决办法
1965
查看次数

使用javascript regexp查找第一个AND最长匹配

我有一个像以下简化示例的RegExp:

var exp = /he|hell/;
Run Code Online (Sandbox Code Playgroud)

当我在一个字符串上运行它时,它会给我第一个匹配,fx:

var str = "hello world";
var match = exp.exec(str);
// match contains ["he"];
Run Code Online (Sandbox Code Playgroud)

我想要第一个和最长的匹配,并且我的意思是按索引排序,然后是长度.

由于表达式是从一个RegExp数组合起来的,我正在寻找一种方法来找到最长的匹配,而不必重写正则表达式.

这甚至可能吗?

如果不是,我正在寻找一种方法来轻松分析表达式,并按正确的顺序排列.但我无法弄清楚,因为表达式可能会复杂得多,fx:

var exp = /h..|hel*/
Run Code Online (Sandbox Code Playgroud)

javascript regex

5
推荐指数
2
解决办法
4750
查看次数

如何在函数中间暂停(延迟返回)并继续事件

有没有办法在函数中间停止,并在继续之前等待某个事件?

node.js

5
推荐指数
1
解决办法
3164
查看次数

同时使用多个regexps进行测试(用于句法分析)

我在JavaScript中编写一个简单的语法高亮显示器,我需要找到一种方法同时测试多个正则表达式.

我们的想法是找出哪个是第一个,所以我可以确定要查找的新表达式集.

表达式可能类似于:

/<%@/,/<%--/,/<!--//<[a-z:-]/

首先,我尝试了一种策略,我将这些表达式组合在一起,如:

/(<%@)|(<%--)|(<!--)|(<[a-z:-])/

这样我就可以找出哪个匹配的组没有未定义.但问题是,当某些子表达式包含组或反向引用时.

所以我的问题是:

有没有人知道一个好的和合理的方式寻找与字符串中的多个正则表达式匹配?

javascript regex parsing

3
推荐指数
1
解决办法
84
查看次数

用于嵌入在html或文本中的语言的Scala解析器组合器(如php)

我一直在玩Scala解析器组合器已经有一段时间了,并且学习了一些方法来使它表现得很好并且使用内置函数完成我想要的大部分工作.

但是你如何制作嵌入式语言(如php或ruby的erb)?在嵌入真实代码之外,它要求不要忽略空格.

我设法创建一个简单的解析器,匹配所有文本,直到给定的正则表达式匹配,但我正在寻找一个更好,更漂亮的方法来做到这一点.可能有一些已定义的功能可以完成所需的工作.

测试语言解析文本,如:

now: [[ millis; ]]
and now: [[; millis; ]]
Run Code Online (Sandbox Code Playgroud)

并由以下代码生成:

package test

import scala.util.parsing.combinator.RegexParsers
import scala.util.matching.Regex

sealed abstract class Statement
case class Print(s: String) extends Statement
case class Millis() extends Statement

object SimpleLang extends RegexParsers {

  def until(r: Regex): Parser[String] = new Parser[String]{
    def apply(in: Input) = {
      val source = in.source
      val offset = in.offset
      val start = offset
      (r.findFirstMatchIn( source.subSequence(offset, source.length) )) match {
        case Some(matched) => 
          Success(source.subSequence(offset, offset + matched.start).toString, in.drop(matched.start))
        case None …
Run Code Online (Sandbox Code Playgroud)

scala embedded-language parser-combinators

2
推荐指数
1
解决办法
1353
查看次数