如何在正则表达式中修剪前导和尾随字符?

时间:2016-06-30 16:59:33

标签: regex

我需要修剪固定长度列的前导和尾随字符。

例如:我有列IdNumber,其长度固定为11,其值低于

X3343438594 7743438534X

我想修剪前导和尾随X,结果应该是这样的。

3343438594 7743438534

2 个答案:

答案 0 :(得分:2)

试试这个:

Search: ^X(?=\d{11}$)|(?<=^\d{11})X$
Replace: <blank>

正则表达式细分:

  • ^X表示“输入开始然后是X”
  • (?=\d{11}$)表示“后跟11位数字然后结束”
  • |表示“逻辑或”
  • (?<=^\d{11})表示“先于开头,然后是11位”
  • X$表示“X然后输入结束”

您想要删除所有匹配项,因此请替换它们。

答案 1 :(得分:0)

var re = /(?=^X|X$)(([A-Z])(\d{10})(\s)(\d{10})([A-Z]))/; 
var str = 'X3343438594 7743438534X';
var subst = '$3$4$5'; 
var result = str.replace(re, subst);
alert(result);

正则表达式首先声明字符串在开头或结尾应该有一个X,而不管数据的长度(不一定是11个字符)。如果是这种情况,它会测试一个以一个字母开头的模式,后跟10个数字(总共11个字符),然后是一个空格,然后十个数字后跟一个字母(另外11个字符)。