我正在尝试匹配字符串中未被点分隔的单词。
因为在 Javascript 中没有 lookbehinds 我一直在努力解决这个问题并且无法让它工作。
测试字符串 1:'一二三.四五六.七八'
应该匹配:'one', 'two', 'five', 'eight'
测试字符串 2: '一.二三四.五六七.八'
应该匹配:'three', 'six'
更新:
测试字符串 3:'一.二三四五六七.八'
应该匹配:'three', 'four', 'five', 'six'
到目前为止,我有 ( |^)(\w+)( |$)
,它有点适用于测试字符串 2,但无法匹配 'two'
。
有什么方法可以用正则表达式来做到这一点,还是应该将它拆分成一个数组然后遍历它?
最佳答案
使用正则表达式 ( |^)\w+(?= |$)
'one two three.four five six.seven eight'.replace(/( |^)\w+(?= |$)/g, '$1TEST')
或者没有正则表达式(可能更具可读性)
'one two three.four five six.seven eight'.split(' ').map(function(item) {
if(item.indexOf('.') < 0)
return 'TEST';
return item;
}).join(' ')
关于Javascript 正则表达式匹配由空格分隔但不包含点的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25546442/