正则表达式替换数字后的最后一个“ K”

时间:2018-09-02 22:53:06

标签: regex

假设:50k == 50000,即“ k”可以替换为“ 000”

如何编写一个正则表达式来替换任何以数字“ 000”开头的“ k”。这样我就可以得到

70k => 70000 70kg => 70kg k => k 70k only => 70000 only

即替换(如果仅替换),其前面加上数字,并且在“ k”后跟一个空格(\ s)或最后一行($)字符

3 个答案:

答案 0 :(得分:4)

您需要搜索的正则表达式为(\d+)[kK]\b(一个或多个数字,后跟kK,后跟单词边界),并替换为{{1} }(regex101 demo)。在PHP中

\1000

输出:

$strings = array('70k','70kg','k','70K only');
foreach ($strings as $str) {
    $str = preg_replace('/(\d+)[Kk]\b/', '${1}000', $str);
    echo "$str\n";
}

在JS中

70000
70kg
k
70000 only

如果您不想将let str = ['70k','70kg','k','70k only']; console.log(str.map(s => s.replace(/(\d+)k\b/, '$1000')));匹配为000,只需将'K'更改为[kK],即k。您可能还希望在正则表达式(即(\d+)k\b)的开头包含\b,以防止匹配诸如\b(\d+)[kK]\b之类的字符串。

答案 1 :(得分:0)

在javascript中,您可以执行以下操作:

var patt =  new RegExp(/(\d+)[k](\s|\n|$)/g);
var str="10k only";
if(patt.test(str)) 
{str =str.replace("k","000");
console.log(str);} else {console.log("err");}

答案 2 :(得分:-2)

user_input =“ 70k 70kg k”
   汇入    comp = re.compile('(\ dK $ | \ dk $)')

''.join([val.replace(“ k”,'000')。replace(“ K”,'000')如果是bool(comp.search(val))
   else val表示user_input.split(“”)])中的val