我试图匹配字符,但我只需匹配单个大写字母。 例如:
'Hello World' - 2 matches
'Hello WOrld' - 1 match
'HEllo WOrld' - 0 matches
到目前为止,我有/(?![A-Z]{1})/g
但我认为我误解了一个消极的前瞻。
谢谢!
答案 0 :(得分:2)
您可以在正则表达式中使用外观:
/(?<![A-Z])[A-Z](?![A-Z])/
(?<![A-Z])
- 负面的背后,如果前一个字符不是大写的英文字母则断言(?![A-Z])
- 否定前瞻,如果下一个字符不是大写英文字母则断言编辑:由于Javascript不支持lookbehind,您可以使用此正则表达式:
(?:^|[^A-Z])[A-Z](?![A-Z])
答案 1 :(得分:0)
我设法通过使用Edge.js从Node调用c#函数来解决这个问题,这让我可以绕过Javascript正则表达式的限制。
最终代码最终看起来像这样:
const getPerson = edge.func(function () {/*
using System.Text.RegularExpressions;
using System.Threading.Tasks;
public class RegexReplacer {
public string PutSpacesBeforeCaps (string input) {
Regex regex = new Regex(@"((?<![0-9])(?<![A-Z])[A-Z](?![A-Z])(?![0-9]))");
return regex.Replace(input, " $1");
}
}
public class Startup {
public async Task<object> Invoke(dynamic input) {
RegexReplacer replacer = new RegexReplacer();
return replacer.PutSpacesBeforeCaps(input.ToString());
}
}
*/});