Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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/17.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,基于此,我尝试匹配所有字符,直到一个单词边界 例如-在以下字符串中匹配apple: apple< 它应该查找一个“a”,然后为任何非单词边界的字符获取一个或多个匹配项。因此,我希望它在之前停止,您必须将单词边界作为正则表达式的一部分,如下所示: /[A-Za-z]+\b/ 您还可以使用: \w+\b 虽然这将包括下划线作为单词的一部分,但单词边界(\b)不是字符,而是字母序列和任何非字母字符之间的空字符串。此外,由于JavaScript中仍然缺乏Unicode支持,“字母”仅表示A

基于此,我尝试匹配所有字符,直到一个单词边界

例如-在以下字符串中匹配
apple

apple<

它应该查找一个“a”,然后为任何非单词边界的字符获取一个或多个匹配项。因此,我希望它在
之前停止,您必须将单词边界作为正则表达式的一部分,如下所示:

/[A-Za-z]+\b/

您还可以使用:

\w+\b
虽然这将包括下划线作为单词的一部分,但单词边界(
\b
)不是字符,而是字母序列和任何非字母字符之间的空字符串。此外,由于JavaScript中仍然缺乏Unicode支持,“字母”仅表示ASCII字母

正因为如此,你

  • 通常不应该使用
    \b
    ,除非您的数据是某种不可能包含Unicode的计算机语言
  • 无法将量词应用于
    \b
    (空字符串乘以10仍然是一个空字符串)
  • 无法否定
    \b
    (它不是字符集,因此没有补码)
  • 不能将
    \b
    包含在字符集中(方括号中),因为它不是字符或字符集
由于
\b
实际上不会向匹配中添加任何字符,因此可以安全地将其附加到正则表达式中:

/.+?\b/
将匹配所有字符,直到第一个单词边界。事实上,这是一个超集:

/\w+/

这可能就是你想要的,因为你只对单词感兴趣,而不是中间的东西。

如果这个问题的改写是准确的:匹配所有以“a”开头的单词,那么你可能已经开始搜索现有的SO答案,如此。从中提取出来,您可以使用字符类来表示单词
\w
,并通过包含前面的单词边界
\b
匹配来防止匹配部分单词,包括“a”,例如“baggage”:
/\ba\w+/gi


var-input=[”应用程序或带有
a的单词
var-re=/a\w+/i;
这看起来不起作用。OP要求从“a”到单词末尾的所有内容。这只是匹配以“a”开头的单词"@redbmk因此提出了开始回答的警告。所有的例子都是以“a”开头的单词。但如果不是这样,OP会想要第一次出现,第二次,第三次,等等吗?:)这很令人困惑。你在这里发布的答案是对另一个问题的一个很好的回答。你甚至包括了一个指向另一个问题的链接,但这个问题没有“没有使用单词边界的答案,也没有被接受的答案。为什么不把这个答案贴在那个问题上呢?@redbmk我不确定什么是令人困惑的。这个问题没有明确说明OP需要部分单词匹配,而且正如前面所说的,提供的所有示例都是以“a”开头的单词。这完全是选项。”如果需要或不需要的话,al会包括边界。为什么你不反复强调其他提供的答案,完全掩盖了少数几个规定的要求之一:应该寻找“a”。到目前为止,没有一个包含这一点。其他答案忽略了“a”这一点很好.不过,你的回答将是对你提到的另一个问题的一个很好的补充。
/\w+/