不允许在输入中使用标点符号

30 浏览
0 Comments

不允许在输入中使用标点符号

我想知道是否可能创建一个正则表达式,允许数字、字母和空格,但不允许标点符号。

现在的情况是,在我的在线贷款申请中,一些用户在街道地址字段中添加逗号(,)作为输入。将申请导出为CSV文件时,由于地址字段中有逗号,CSV文件的逗号位置不正确。

我已经花了几个小时玩正则表达式,它进展顺利,但不完美。偶尔会出现无法验证但没有标点符号的地址。否则,这将是可接受的输入,但是正则表达式不允许验证它。

所以,我是否可以规定允许的内容(数字、空格、字母)之外的内容(标点符号)?后者比前者更有意义。

为了信息目的,我已经包含了已提交的地址列表,我用它来测试我的正则表达式。我还包括了我一直在努力的正则表达式。非常感谢任何指导或帮助。

注意:我在无效输入处添加了注释。在无效输入下面,我放置了一个编辑后的副本,现在是有效的。

地址:

3 TINDERWOOD CRESCENT

117HEIDERAND FLATS EESSENTHOUT STREET HEIDERAND 6511 -- 数字后没有空格

117 HEIDERAND FLATS EESSENTHOUT STREET HEIDERAND 6511

3289 ext5 edenpark

120411 mpande loation

1433b Moulton Avenue

1433 b Moulton Avenue

4 diesel rd

10821 Morubisi Street

Unit 44 Charis Place, Prosperity Road, Groblerspark -- 有标点符号

Unit 44 Charis Place Prosperity Road Groblerspark -- 以单词开始

44 Charis Place Prosperity Road Groblerspark

p box 3581 -- 无效的街道地址

82 Akasia laan

987 leruleng sectionsaulspoort

1 lenton drive

1179 gugulethu street

1 lenton drive

10269verdwaal2 -- 没有空格

10269 verdwaal 2

15 Prinsloo Street

1179 gugulethu street

13 Adler str, Eden Park -- 有标点符号

13 Adler str Eden Park

410 wonderzicht, 538 de beerstr -- 有标点符号

410 wonderzicht 538 de beerstr

1551 -- 无效的街道地址

52 Koedoe Ave

26a high road orchards

Musina ext9 4363 -- 数字放错位置-见下文

4363 Musina ext9

18 Replubliek street

753 steve biko avenue unit2

221 Buitekant straat

54 Zone A

B1287 UMSOLWA ROAD

54 Zone A

6574 LETLHODI STREET UNIT 14

27 k street

9635 Zanemvula street

2667 nthatisi Street

498 CESSNA AVENUE

maromene 17 -- 数字放错位置-见下文

17 maromene

F1 Ngoje cres MarainnhillM

6574 letlhodi street unit 14

21 tecomastreet

21 tecomastreet

07 Frara Drive

6440 MAYANA STREET THEMBALETHU GEORGE 6529

no.87 Vista Villas -- 数字前有单词且有标点符号

87 Vista Villas

12 jama street z section --- !!!!!!!!!!!!!!!!!!!!!!!!

B1287 Umsolwa road

B 1287 Umsolwa road -- B后有空格

6574 letlhodi street

7658 Itsomo Steet Ext6

5dharrisson str -- 数字后没有空格

5d harrisson str

322 Lenham Drive, Lenham -- 有标点符号

322 Lenham Drive Lenham

schoolstreet 3 -- 数字前有名称

3 schoolstreet

50 Hercules Court

1546 sefatsa stand

61 sixwila street

20800 mamelodi east

colchester crescent

12 Iraq Street

12 moshoeshoe str

21 vansoelen street

12 moshoeshoe str

4102 Geelhout Street

ward 16, umzumbe, hibberdene -- 有标点符号

ward 16 umzumbe hibberdene

839 Maokeng ext

28caledon drive

34 Leo ave

6423 Bandura Street, Willow Manor Ext. 1

8541 Snake Park

7 INSISWA WAY EXT 12 SHERWOOD PARK 7349

plot 50 kareebos

404 Windermere street

404 Windermere street

404 Windermere street

68 Flamink Street

68 Flamink Street

71 Eagle Dawn Zeiss road

block r3 room 105 n2 gateway

50 plein str

B206 Chapters

225 Buitenkant Street

9 Chestnut street Bonteheuwel

1740a Ben Naude Drive Zone 2

Droedam Farm

16 Aberfeldy Road The Hill

11th road 25 simonsig noordwyk

49 Soetdoring

Allensnek

12935

29 likhonda street

6 Matume street

Plot 88

22 Community Road

1100 kwamakhutha township, po amanzimtoti

9 balmoral heights, balmoral road

3 makubalo streets

3951 umthungwa street birch acres ext 23

12986 Walter Sisulu Street

11138 nongoma str

51 rudloff rd

10 Villa Palazzo, Belami Drive

321 Francis Baard Street

65 9 th street

35 Fiskaal street

14 olive street

9 manho street

38 victoria road

354 Ethafeni Section

16 Arkeldien Street

6.5 Boundary Road

100 Vlamboom Road

902 Mquma Street Bophelong

35 amsterdam street

55 fanplam gardens palmview

6213 Zone 12 Extion Sebokeng

stand no.043 ooslope

3 MURISON STREET

177 govan mbeki township

9 Chestnut street Bonteheuwel

4347 BLOCK B

1a roy cambell street

146 poole avenue

116 Woburn Street

545 Phase 5B Buhlepark

33 vos street

37 fifth street , rusthof

18 Marinda Crescent Marinda

16 chromite ave

13 kanti street 35263,Harare

67 Third Street

270 queen elizabeth ave

30 Victoria

9 manho str

26 Liebenhof Flats Young Str

1 Carter Street

10 Villa Palazzo, Belami Drive

11 vlasblomsingel progress

block 44, 513 sunset avenue

1073 mphafa road

1344 Pickerel place

1073 mphafa road

sweatpealaan 2751

44 Brummerstreet

151 Ext 3

433 10 kodi street

617 rondomstraat Louterwater

10 GREEN STREET

149 tamsanqa street

3 Newfeld Street

76 Dorp Street

5 Mabille Street

28 heathbury place

2356 joyce ndinisa road

A13 Lekoane street

正则表达式:

/^(\w*)(\d+)(\w)?\s(\w+(\s?\w+?))+$/

0
0 Comments

原因:在输入中不允许使用标点符号的原因是为了避免与CSV文件中的分隔符冲突,导致数据解析错误。

解决方法:可以通过转义字段中的逗号来解决该问题。在JavaScript中,可以使用以下代码来转义CSV值:

function escapeCsvValue(val) {
    if (val.indexOf(',') > -1 || val.indexOf('"') > -1) {
        return '"' + val.replace(/"/g, '""') + '"';
    }
    return val;
}
var csv = [
    ['Name, CommaForFun', 'Address'], 
    ['Jack','Calle Ocidental, 2'], 
    ['Jill O"quote"','125, The "cool" place'], 
    ['John','123 Main st'], 
];
   
var escapedCsv = csv.map(function(row){
    return row.map(escapeCsvValue).join(',');
});
var csvString = escapedCsv.join('\n');
console.log(csvString);

以上代码会将CSV值中的逗号进行转义,并添加双引号包裹整个字段。这样就可以保证在解析CSV文件时不会将逗号误认为是分隔符,从而正确解析数据。

输出结果如下:

"Name, CommaForFun",Address

Jack,"Calle Ocidental, 2"

"Jill O""quote""","125, The ""cool"" place"

John,123 Main st

0
0 Comments

在这段内容中,提到了使用正则表达式以及替换方法来处理输入中的标点符号。作者提到可以使用以下简单的代码来替换输入中的逗号:

 var address = "My address, with commas not allowed";
 var newAddress = address.replace(",","");

这种方法可以让用户自由地输入地址,但同时又不会破坏CSV文件的分隔符。作者举例说明了可以输入以下这样的地址:

Street Nowhere Nº 10 - 2 (12000)

而这样的地址在使用正则表达式替换后会变成:

Street Nowhere N 10 2 12000

这样的地址不够易读。

作者认为使用“允许数字、字母和空格,但不允许标点符号”的正则表达式会使得这种方法变得困难。原问题是CSV文件中的逗号分隔符的问题。作者提出了一种简单的方法,允许用户自由输入所需内容,而不会破坏CSV文件的分隔符。但是,如果你觉得贬低别人可以让你感觉更好,那么你可以继续贬低。

我没有贬低,而是进行了评论。我认为你应该更清楚地解释为什么建议使用你的方法(就像你在评论中所做的那样),这可能会避免进一步的负评。

好的,我接受你的建议,我会编辑我的答案。谢谢你 🙂

这种方法无法处理多个逗号或值中的双引号的情况。详细信息请参见stackoverflow.com/a/33676623/227299

是的,这取决于CSV文件的格式。然而,原问题的提问者已经消失了。

0