Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,我试图找到合适的正则表达式来选择不包含连字符的术语。例如,我想找到术语债务,但不是债务与收入之比 我有\b债务到收入\b,它只会选择债务到收入,但我需要相反的选择。救命啊 只需使用JavaScript: var hyphens = 'debt-to-income'; if (hyphens.indexOf('-') == -1) { // No hyphens } 只需使用JavaScript: var hyphens = 'debt-to-income'; if (hyphens.i

我试图找到合适的正则表达式来选择不包含连字符的术语。例如,我想找到术语
债务
,但不是
债务与收入之比

我有
\b债务到收入\b
,它只会选择
债务到收入
,但我需要相反的选择。救命啊

只需使用JavaScript:

var hyphens = 'debt-to-income';

if (hyphens.indexOf('-') == -1) {
  // No hyphens
}
只需使用JavaScript:

var hyphens = 'debt-to-income';

if (hyphens.indexOf('-') == -1) {
  // No hyphens
}

使用以下模式:“债务”后面不跟“-to income”

此模式可以轻松扩展以限制更多,例如“
美国债务”
”:


您不应该只查找连字符,因为
无债务
(当
无债务
表示无任何内容时)可能也应该匹配。

使用以下模式:“债务”后面不跟“-to income”

debt\b([^\-]|$)
此模式可以轻松扩展以限制更多,例如“
美国债务”
”:

您不应该只查找连字符,因为
无债务
(当
无债务
不表示任何内容时)可能也应该匹配

debt\b([^\-]|$)
debt
后跟除连字符或字符串结尾以外的字符

如果您还想检查左侧:
(^\\-])\bdebt\b([^\-]\$)

debt
后跟除连字符或字符串结尾以外的字符


如果您还想检查左侧:
(^^\-])\bdebt\b([^\-])

基本上,您要查找的是“术语后跟非字母但非连字符”:

term=“债务”
re=newregexp(“\\b”+term+”(?=[^\\w-])”,“g”)
text=“这是债务和债务,债务词和债务与收入”
console.log(text.replace(re,“”)
结果:

this is <debt> and <debt>, debtword and debt-to-income
这是和,债务词和债务与收入之比

基本上,您要查找的是“后面跟非字母但不是连字符的术语”:

term=“债务”
re=newregexp(“\\b”+term+”(?=[^\\w-])”,“g”)
text=“这是债务和债务,债务词和债务与收入”
console.log(text.replace(re,“”)
结果:

this is <debt> and <debt>, debtword and debt-to-income
这是和,债务词和债务与收入之比

如果目的是在字符流中查找特定的单词,其中单词被定义为包括连字符在内的连续字符数,那么我认为\b需要放弃,因为Javascript将连字符视为单词边界。例如,根据上述假设,负债或负债与收入的比例不正确。通过将单词字符定义为
[\w\-]
,以下正则表达式将匹配正确的单词,但不幸的是,由于Javascript中缺少lookback支持,需要替换捕获组,因为第一部分匹配前面的字符

(?:^|[^\w\-])(debt)(?=[^\w\-])

如果目的是在字符流中查找特定的单词,其中单词被定义为包括连字符在内的连续字符数,那么我认为\b需要放弃,因为它在Javascript中将连字符视为单词边界。例如,根据上述假设,负债或负债与收入的比例不正确。通过将单词字符定义为
[\w\-]
,以下正则表达式将匹配正确的单词,但不幸的是,由于Javascript中缺少lookback支持,需要替换捕获组,因为第一部分匹配前面的字符

(?:^|[^\w\-])(debt)(?=[^\w\-])

\bdebt\b
仍然欠-income@thg435连字符是一个词的边界
\bdebt\b
仍然会得到债务-income@thg435连字符是一个单词边界。我正在通过编程将单词替换为链接,债务需要转移到一个地方,债务对收入需要转移到另一个地方。当我开始替换“债务”时,我需要它不要影响债务与收入的比率,否则我最终会得到与收入比率相当的东西,然后我就不会发现债务与收入的比率了。我可以找到带连字符的词,我需要找到没有连字符的词:)嗯,@pstinnett这里的
if
案例将涵盖所有非连字符变量。对。只有当字符串没有
-
时,该代码才会运行。我正在通过编程将单词替换为链接,债务需要转移到一个地方,债务与收入的关系需要转移到另一个地方。当我开始替换“债务”时,我需要它不要影响债务与收入的比率,否则我最终会得到与收入比率相当的东西,然后我就不会发现债务与收入的比率了。我可以找到带连字符的词,我需要找到没有连字符的词:)嗯,@pstinnett这里的
if
案例将涵盖所有非连字符变量。对。只有当字符串没有
-
时,该代码才会运行。