Regex Ruby正则表达式-如果字符串超过10个字符,请删除第一个字符(如果是“";1“;
在不使用gem的情况下,我只想编写一个简单的regex公式,以删除字符串中的第一个字符,如果它是1,并且字符串中的字符总数超过10个。我从来没有期望超过11个字符,11应该是最大值。但是如果有10个字符并且字符串以“1”开头,我不想删除它Regex Ruby正则表达式-如果字符串超过10个字符,请删除第一个字符(如果是“";1“;,regex,ruby,Regex,Ruby,在不使用gem的情况下,我只想编写一个简单的regex公式,以删除字符串中的第一个字符,如果它是1,并且字符串中的字符总数超过10个。我从来没有期望超过11个字符,11应该是最大值。但是如果有10个字符并且字符串以“1”开头,我不想删除它 str = "19097147835" str&.remove(/\D/).sub(/^1\d{10}$/, "\1").to_i 返回0 我希望它返回“9097147835”您可以使用 str.gsub(/\
str = "19097147835"
str&.remove(/\D/).sub(/^1\d{10}$/, "\1").to_i
返回0
我希望它返回“9097147835”您可以使用
str.gsub(/\D/,“”).sub(/\A1(?=\D{10})/,“”).to_i
请参阅和
正则表达式匹配
-字符串的开头\A
-a1
1
-当前位置右侧必须有10位数字(?=\d{10})
\A1(\d{10})\z
比如说
str = "19097147835"
puts str.gsub(/\D/, '').sub(/\A1(\d{10})\z/, '\1').to_i
输出
9097147835
9097147835
另一个选项是删除所有非数字,并匹配最后10个数字:
\A1\K\d{10}\z
字符串的开头\A
匹配1并忘记目前匹配的内容1\K
匹配10位数字\d{10}
字符串结尾\z
9097147835
9097147835
非正则表达式示例:
str = str[1..] if (str.start_with?("1") and str.size > 10)
正则表达式功能强大,但不容易维护