首页 > 解决方案 > Javascript 挑战中的正则表达式

问题描述

我有看起来像这样的字符串:

list_test_prod_01

list_test_prod_02

或者另一个例子是

sub_test_prod_feature

sub_test_prod_feature_round_edge

ETC

我想知道是否有一种方法可以使用正则表达式进行搜索和替换操作,该操作将找到字符串中最后出现的下划线字符(如示例所示,这不是固定数字),然后转到单词的结尾并附加另一个字符串。

例如sub_test_prod_feature变成sub_test_prod_feature_typed.

在整页文本中可能会多次出现这些所谓的关键字。

希望有人有一个好主意,我在正则表达式和常规搜索方面不是最好的,并且用 indexof、子字符串等替换代码到目前为止在大量文本中还没有故障安全。

谢谢!

标签: javascriptregex

解决方案


用JS,试试

str.replace(/(\b[a-z]+(_[a-z]+)+\b)/gi, '$1_typed');

例子:

编辑 如果像 _xyz 这样的字符串也必须被替换,那么正则表达式是(\b[a-z]*(_[a-z]+)+\b)

var result = 'a_b_c d_e f_g_ hij k_l_m,n_o_p_q _xyz'
             .replace(/(\b[a-z]+(_[a-z]+)+\b)/gi, '$1_typed');
console.log(result); // "a_b_c_typed d_e_typed f_g_ hij k_l_m_typed,n_o_p_q_typed _xyz"

var result2 = 'a_b_c d_e f_g_ hij k_l_m,n_o_p_q _xyz'
             .replace(/(\b[a-z]*(_[a-z]+)+\b)/gi, '$1_typed');
console.log(result2); // "a_b_c_typed d_e_typed f_g_ hij k_l_m_typed,n_o_p_q_typed _xyz_typed"


推荐阅读