{"data":{"id":"magento2-39859","source":"github-pr","sourceRef":"magento/magento2#39859","title":"[2.4.8] Cannot place orders where City has digits 0-9, Ampersand, full stop or parenthesis in the City Name","pr":{"number":39859,"url":"https://github.com/magento/magento2/pull/39859","author":"bhushan-cs","mergedAt":"2025-08-13T06:52:18Z","mergeCommit":"71128824b5e27aed7db4ecd5e8d97c5deff7d754","headCommit":"622621e37b38584252fba05b7ddc222c983dc55f","baseRef":"2.4-develop","diffSha256":"eeea6be1277a9048e71bdff166b9e1a5aa194810a6faaf98fc8136bc13a8c26f"},"issues":[{"number":39854,"url":"https://github.com/magento/magento2/issues/39854","title":"[2.4.8] Cannot place orders where City has digits 0-9, Ampersand, full stop or parenthesis in the City Name","labels":["Area: Cart & Checkout","Component: Checkout","Issue: Confirmed","Priority: P1","Progress: PR Created","Progress: done","Reported on 2.4.8","Reproduced on 2.4.x"],"kind":"human"}],"fixedIn":"2.4.9","containingTags":["2.4.9"],"reportedOn":"2.4.8","codeMatch":{"2.4.6":"file-missing","2.4.6-p1":"file-missing","2.4.6-p2":"file-missing","2.4.6-p3":"file-missing","2.4.6-p4":"file-missing","2.4.6-p5":"file-missing","2.4.6-p6":"file-missing","2.4.6-p7":"file-missing","2.4.6-p8":"file-missing","2.4.6-p9":"file-missing","2.4.6-p10":"file-missing","2.4.6-p11":"file-missing","2.4.6-p12":"file-missing","2.4.6-p13":"file-missing","2.4.6-p14":"file-missing","2.4.6-p15":"file-missing","2.4.7":"file-missing","2.4.7-p1":"file-missing","2.4.7-p2":"file-missing","2.4.7-p3":"file-missing","2.4.7-p4":"file-missing","2.4.7-p5":"file-missing","2.4.7-p6":"file-missing","2.4.7-p7":"file-missing","2.4.7-p8":"file-missing","2.4.7-p9":"file-missing","2.4.7-p10":"file-missing","2.4.8":"clean","2.4.8-p1":"clean","2.4.8-p2":"clean","2.4.8-p3":"clean","2.4.8-p4":"clean","2.4.8-p5":"clean","2.4.9":"conflict"},"affectedVersions":["2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5"],"components":["magento/module-customer"],"files":[{"path":"app/code/Magento/Customer/Model/Validator/City.php","change":"modified","package":"magento/module-customer"}],"stripped":{"tests":["app/code/Magento/Customer/Test/Unit/Model/Validator/CityTest.php"],"docs":[],"outsideCode":[]},"linesChanged":13,"mergeBatched":false,"excluded":null,"sections":{"description":"Order is not placed.","stepsToReproduce":"Place an order using any of the following City Names\n\n- St. Moritz\n- St. Petersburg\n- Brighton & Hove\n- St. Davids\n- 29 Palms\n- Anywhere (North)","expectedResult":"Order is placed","actualResult":"Order is not placed.\n\n\"Invalid City. Please use A-Z, a-z, 0-9, -, ', spaces\"\n\n1. The error message doesn't match the regex.\n2. The regex is too restrictive\n3. These all pass frontend validation of the city field","source":"issue"},"signatures":[],"labels":{"area":["Cart & Checkout"],"component":["Checkout"],"priority":"P1","severity":null,"reportedOn":["2.4.8"]},"categories":["Order/Checkout"],"triage":{"model":"@cf/cloudflare/clef","requestHash":"e60f604180a63f34a4e2b42236aaf851e45b6e3ab370f66b139cd2aa84910bed","isBugfix":0.9858,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.9563,"feature":0.0084,"refactor":0.0136,"tests_only":0.0102,"docs_only":0.0053,"dependency":0.0062},"confidence":0.898},"scope":{"score":0.5891,"probabilities":{"0":0.5313,"1":0.3483,"2":0.1204},"confidence":0.1271},"risk":{"score":0.8162,"probabilities":{"0":0.5242,"1":0.1353,"2":0.3405},"confidence":0.1136},"area":{"choice":"checkout","probabilities":{"catalog":0.0061,"checkout":0.5508,"customer":0.3921,"admin":0.0119,"graphql_api":0.0055,"framework":0.0139,"frontend":0.0111,"other":0.0086},"confidence":0.3803},"securityRelevant":0.0333,"reportedVersion":{"choice":"2.4.8","probabilities":{"2.4.0":0.0027,"2.4.0-p1":0.0027,"2.4.1":0.0025,"2.4.1-p1":0.0026,"2.4.2":0.0028,"2.4.2-p1":0.0028,"2.4.2-p2":0.003,"2.4.3":0.0035,"2.4.3-p1":0.0035,"2.4.3-p2":0.0044,"2.4.3-p3":0.0032,"2.4.4":0.0031,"2.4.4-p1":0.0028,"2.4.4-p10":0.0035,"2.4.4-p11":0.0036,"2.4.4-p12":0.0039,"2.4.4-p13":0.0038,"2.4.4-p14":0.0044,"2.4.4-p15":0.0038,"2.4.4-p16":0.004,"2.4.4-p17":0.0033,"2.4.4-p18":0.0033,"2.4.4-p2":0.0026,"2.4.4-p3":0.0025,"2.4.4-p4":0.0027,"2.4.4-p5":0.0031,"2.4.4-p6":0.0033,"2.4.4-p7":0.0032,"2.4.4-p8":0.0036,"2.4.4-p9":0.0028,"2.4.5":0.003,"2.4.5-p1":0.0027,"2.4.5-p10":0.0028,"2.4.5-p11":0.0032,"2.4.5-p12":0.0044,"2.4.5-p13":0.004,"2.4.5-p14":0.004,"2.4.5-p15":0.0032,"2.4.5-p16":0.0035,"2.4.5-p17":0.0034,"2.4.5-p2":0.0027,"2.4.5-p3":0.0029,"2.4.5-p4":0.003,"2.4.5-p5":0.0032,"2.4.5-p6":0.0039,"2.4.5-p7":0.0038,"2.4.5-p8":0.0042,"2.4.5-p9":0.0029,"2.4.6":0.0049,"2.4.6-p1":0.0046,"2.4.6-p10":0.0051,"2.4.6-p11":0.0053,"2.4.6-p12":0.0073,"2.4.6-p13":0.005,"2.4.6-p14":0.005,"2.4.6-p15":0.0046,"2.4.6-p2":0.003,"2.4.6-p3":0.0036,"2.4.6-p4":0.0039,"2.4.6-p5":0.0047,"2.4.6-p6":0.0078,"2.4.6-p7":0.0049,"2.4.6-p8":0.0045,"2.4.6-p9":0.0033,"2.4.7":0.0065,"2.4.7-p1":0.0055,"2.4.7-p10":0.0052,"2.4.7-p2":0.004,"2.4.7-p3":0.0055,"2.4.7-p4":0.0062,"2.4.7-p5":0.0056,"2.4.7-p6":0.0091,"2.4.7-p7":0.0065,"2.4.7-p8":0.0065,"2.4.7-p9":0.0037,"2.4.8":0.5773,"2.4.8-p1":0.0214,"2.4.8-p2":0.0246,"2.4.8-p3":0.0206,"2.4.8-p4":0.0177,"2.4.8-p5":0.0176,"2.4.9":0.0078,"unspecified":0.0134},"confidence":0.3289},"backportWorthy":{"score":1.6328,"probabilities":{"0":0.0622,"1":0.2429,"2":0.6949},"confidence":0.3187}},"curated":{"title":"Orders are rejected for city names with digits, periods, & or parentheses","description":"Orders with a city like St. Moritz, Brighton & Hove, 29 Palms or Anywhere (North) are not placed with Invalid City, and these all pass frontend validation. PATTERN_CITY in the Customer Validator City is changed to allow digits, underscore, comma, period, ampersand, parentheses and straight and typographical apostrophes, with ^ and $ anchors, and the error message now names these characters.","categories":["Order/Checkout"],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":{"2.4.8-p5":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-06T09:20:16.286Z","releaseCommit":"870a22c63d9d9b68fa3297962e2d5d5841115814","suites":{"unit":{"before":"fail","after":"pass","runAt":"2026-10-06T09:20:16.286Z"}}}}},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-39859 details"}