[英]regex experession to extract complete address starting from house number if unit numbers are present
[英]regex to extract numbers starting from second symbol
對不起,還有大量的正則表達式問題,但我找不到與我的需求相似的東西。 我想輸出的字符串可以包含數字或字母“ A”作為第一個符號,而數字只能包含在其他位置。 輸入是任何字符串,例如:
---INPUT--- -OUTPUT-
A123asdf456 -> A123456
0qw#$56-398 -> 056398
B12376B6f90 -> 12376690
12A12345BCt -> 1212345
我試過的是replace(/[^A\\d]/g, '')
(我使用JS),除了在字符串中間有A
的情況外,幾乎可以完成工作。 我嘗試使用^
錨,但是模式與字符串中的其他數字不匹配。 不確定哪個更容易-提取匹配的字符或刪除不匹配的字符。
我認為您可以使用負前瞻來做到這一點,然后替換為空字符串。
在非捕獲組(?:
,使用否定的lookahad (?!
?!斷言其后跟不是字符串的開頭,后跟^A
或數字\\d
。如果是這種情況,請匹配任何字符.
var pattern = /(?:(?!^A|\\d).)+/g; var strings = [ "A123asdf456", "0qw#$56-398", "B12376B6f90", "12A12345BCt" ]; for (var i = 0; i < strings.length; i++) { console.log(strings[i] + " ==> " + strings[i].replace(pattern, "")); }
您可以在交替的兩個不同側面中匹配並捕獲所需和不需要的字符,然后將所有不需要的字符替換為空:
^(A)|\D
JS代碼:
var inputStrings = [ "A-123asdf456", "A123asdf456", "0qw#$56-398", "B12376B6f90", "12A12345BCt" ]; console.log( inputStrings.map(v => v.replace(/^(A)|\\D/g, "$1")) );
您可以使用以下正則表達式: /(^A)?\\d+/g
var arr = ['A123asdf456','0qw#$56-398','B12376B6f90','12A12345BCt', 'A-123asdf456'], result = arr.map(s => s.match(/(^A|\\d)/g).join('')); console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.