假设:50k == 50000,即“ k”可以替换为“ 000”
如何编写一个正则表达式来替换任何以数字“ 000”开头的“ k”。这样我就可以得到
70k => 70000
70kg => 70kg
k => k
70k only => 70000 only
即替换(如果仅替换),其前面加上数字,并且在“ k”后跟一个空格(\ s)或最后一行($)字符
答案 0 :(得分:4)
您需要搜索的正则表达式为(\d+)[kK]\b
(一个或多个数字,后跟k
或K
,后跟单词边界),并替换为{{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