Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 - Fatal编程技术网

Javascript 哪个正则表达式将与指定的;“触发”;直到一个空间?

Javascript 哪个正则表达式将与指定的;“触发”;直到一个空间?,javascript,regex,Javascript,Regex,我有这个正则表达式/\[\w+:/ 当用户在文本字段中键入[something:(可以是[place:,[info:,[user:,等等)时,我使用它来检测 我想扩展正则表达式以匹配:后面的字符,但不超过空格(也不包括空格) var str = "This is a [place:car a great place to go!"; var matchedStr = str.match(REGEX); 匹配的STR值应为[地点:car 谢谢 行得通 这是可行的您需要零宽度负前瞻断言。请参阅:

我有这个正则表达式
/\[\w+:/

当用户在文本字段中键入
[something:
(可以是[place:,[info:,[user:,等等)时,我使用它来检测

我想扩展正则表达式以匹配
后面的字符,但不超过空格(也不包括空格)

var str = "This is a [place:car a great place to go!";
var matchedStr = str.match(REGEX);
匹配的STR值应为
[地点:car

谢谢

行得通


这是可行的

您需要零宽度负前瞻断言。请参阅:


它断言以下文本与其表达式不匹配,但不使用任何输入字符(零宽度)。

您想要零宽度负前瞻断言。请参阅:

它断言以下文本与其表达式不匹配,但不使用任何输入字符(零宽度)。

这可能是

var REGEX = /.*(\[[a-z]+:[a-z]+)\s.*/;
var str = "This is a [place:car a great place to go!";
var matchedStr = str.match(REGEX);
var result = matchedStr[1];
alert(result)
也许是这个

var REGEX = /.*(\[[a-z]+:[a-z]+)\s.*/;
var str = "This is a [place:car a great place to go!";
var matchedStr = str.match(REGEX);
var result = matchedStr[1];
alert(result)

\S
匹配任何非空白的内容,因此您可以执行
\[\w+:\S+
以获得所需的匹配。这不仅包括常规空格,还包括换行符、制表符等。(这可能是您想要的)


您也可以简单地使用空格创建一个负数字符类:
\[\w+:[^]+
(包括制表符/换行符/etc)

\S
匹配任何非空白的字符,因此您可以使用
\[\w+:\S+
来获得所需的匹配。这不仅包括常规空格,还包括换行符、制表符等。(这可能就是你想要的)


您也可以简单地使用空格创建一个负字符类:
\[\w+:[^]+
(包括制表符/换行符/etc)

这取决于您希望在“:”后面的字符串中允许哪些字符

如果要匹配除空白以外的任何内容,则应使用以下方法:

/\[\w+:[^\s]*/
如果你只想让它匹配字母,Lee的解决方案就行了。如果你想让它匹配字母、数字和下划线,Joseph的答案就行了

另外,如果在“:”之后没有非空格字符,是否希望它成功

如果希望它匹配“[aaaa:bbbb”,但不匹配“[aaaa:”,则应将*更改为a+

/\[\w+:[^\s]+/

这取决于要在“:”后面的字符串中允许哪些字符

如果要匹配除空白以外的任何内容,则应使用以下方法:

/\[\w+:[^\s]*/
如果你只想让它匹配字母,Lee的解决方案就行了。如果你想让它匹配字母、数字和下划线,Joseph的答案就行了

另外,如果在“:”之后没有非空格字符,是否希望它成功

如果希望它匹配“[aaaa:bbbb”,但不匹配“[aaaa:”,则应将*更改为a+

/\[\w+:[^\s]+/

这是可行的,并且可能已经足够好了,但并不严格符合定义的标准“在:之后匹配字符,但不超过空格”-例如,它将不匹配hypen和
[place:flying car
可能是一个有效的匹配项。@Peter Boughton首先,感谢您的输入。这让我陷入了很多麻烦,但我倾向于假设海报的目的是什么,并以此为基础来回答问题。给出的示例简单地抓住了第一个单词,如果是这样的话,您通常会使用单词字符。Since这个例子是由我认为是好是坏的单词组成的。:p既然OP似乎已经知道
\w
,那么如果这是他们想要的,他们就不需要问这个问题了?必须等待澄清才能确定。@Joseph:如果你认为OP应该用不同的措辞来回答这个问题,你应该这么说。找出正确的问题是学习的关键。谢谢你的代码。事实上,为了回答彼得,我对正则表达式了解不多。我真的需要深入研究并学习它。我提供的正则表达式来自我在别处找到的一个片段。我可以从我的问题中添加/删除哪些内容来制作更容易理解吗?谢谢!这很有效,可能已经足够好了,但并不严格符合定义的标准“在:之后匹配字符,但不超过空格”-例如,它将不匹配hypen和
[place:flying car
可能是一个有效的匹配项。@Peter Boughton首先,感谢您的输入。这让我陷入了很多麻烦,但我倾向于假设海报的目的是什么,并以此为基础来回答问题。给出的示例简单地抓住了第一个单词,如果是这样的话,您通常会使用单词字符。Since这个例子是由我认为是好是坏的单词组成的。:p既然OP似乎已经知道
\w
,那么如果这是他们想要的,他们就不需要问这个问题了?必须等待澄清才能确定。@Joseph:如果你认为OP应该用不同的措辞来回答这个问题,你应该这么说。找出正确的问题是学习的关键。谢谢你的代码。事实上,为了回答彼得,我对正则表达式了解不多。我真的需要深入研究并学习它。我提供的正则表达式来自我在别处找到的一个片段。我可以从我的问题中添加/删除哪些内容来制作更容易理解?谢谢!正如您所指出的,负前瞻是一种零宽度位置匹配,这意味着要真正匹配某些内容,您需要将其与其他内容结合使用,以实际使用输入,例如:
(?:(?!\s)。)+
-当然,当
\s
在两个字符中实现完全相同的结果时,这是一种非常冗长的方法。OP指定他不希望在匹配中包含空格。使用\W将消耗空格,并因此包含它。呃,我没有在任何地方提到
\W
这两个代码样本我的评论中的es将不会在匹配中包含任何空格字符。正如您所指出的,负前瞻是零